Lorsque vous utilisez un formulaire comme celui-ci:ASP.NET MVC - Mettre en forme le signet HTML?
<h2>
<%:Model.EulaTitle %>
</h2>
<p>
<%=Model.EulaHtml %>
</p>
<a name="errors"></a>
<%:Html.ValidationSummary()%>
<div style="text-align:center;">
<% using (Html.BeginForm())
{ %>
<%:Html.HiddenFor(model => model.SourceUrl)%>
<%:Html.HiddenFor(model => model.EulaId)%>
<a name="accept"></a>
<div style="text-align:center;">
<%:Html.CheckBoxFor(model => model.Accepted)%>
<%:Html.LabelFor(model => model.Accepted)%>
</div>
<input type="submit" value="Submit">
<% } %>
</div>
J'ai besoin la page pour faire défiler #errors
quand il messages. Le Model.EulaHtml
contient du texte CLUF de longueur et je préférerais que l'utilisateur n'ait pas à faire défiler manuellement pour voir un message d'erreur s'il publie la page sans accepter le contrat.
Si le contrôleur détecte ModelState.IsValid
dans Post, il redirige vers une autre page. Si ce n'est pas le cas, je dois rester sur cette page, mais faites défiler jusqu'à la balise d'ancrage de signet #errors
.
J'ai pensé à simplement ajouter '#errors' à la fin de l'URL dans l'action de formulaire, mais je reçois des erreurs le long de la ligne a potentially dangerous .... ('%')
. Il est possible que je code incorrectement la marque de hachage. Quelqu'un d'autre a dû faire face à cela? Nous traitons des exigences assez restrictives pour la compatibilité du navigateur (IE6 + et tout le reste sous le soleil), donc j'essaie d'éviter d'utiliser JavaScript autant que possible.
Mise à jour
L'erreur que je reçois est:
A potentially dangerous Request.Path value was detected from the client (%).
Je modifed l'appel Html.BeginForm()
à
<% using (Html.BeginForm(new { @action="#errors" }))
{ %>
Et l'URL résultante est:
http://..../TheControllerName/Eula/%2523errors/
J'ai également remarqué que quelques paramètres queryString qui passaient par disparaissent lorsque je définis l'attribut action
de cette manière. (Pas étonnant, mais pas de solution pour cela est immédiatement évident pour moi)
Quelle est l'erreur exacte que vous obtenez? La bonne façon de le faire est d'ajouter les #erreurs à la fin de l'URL. Après avoir redirigé vers l'URL avec les #erreurs à la fin, voyez-vous la bonne adresse dans la barre d'adresse du navigateur? – willvv
Mise à jour de la question avec l'erreur et l'URL générée –