Possiedo un'applicazione Internet MVC4 con un modulo per la creazione di account utente. La convalida del modulo funziona ma mentre l'input non riesce la convalida non viene visualizzato alcun messaggio di errore. Previene ancora presentando fino a quando il problema di convalida è risolto, ma non c'è alcun testoLa convalida del client non mostra il messaggio
Razor Visualizza modulo
<h2>Create New Account</h2>
<fieldset>
<legend></legend>
@using (Html.BeginForm("CreateUser",null)){
@Html.AntiForgeryToken()
<table class="create">
<tr>
<td colspan="2"><b>New Account</b>
</tr>
<tr>
<td>@Html.DisplayNameFor(model=>model.UserName)</td><td>@Html.TextBoxFor(model=>model.UserName)</td>
<td>@Html.DisplayNameFor(model=>model.EmailAddress)</td><td>@Html.TextBoxFor(model=>model.EmailAddress)</td>
<td><input type="submit" value="Create User" /></td>
</tr>
</table>
}
</fieldset>
@Html.ValidationSummary()
I fasci utilizzati includere i file di convalida
bundles.Add(new ScriptBundle("~/bundles/asset").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-ui-{version}.js",
"~/Scripts/jquery.validate*",
"~/Scripts/jquery.unobtrusive*"));
Il modello utilizzato è un modello di entità , Ho aggiunto una classe parziale per annotare i requisiti di convalida
[MetadataType(typeof(UserProfileMetadata))]
public partial class UserProfile
{
//Empty Class just required for adding class level attribute
}
public class UserProfileMetadata
{
//Fields from user profile requiring annotations
[EmailAddress]
[Required]
[Display(Name = "Email Address")]
public string EmailAddress { get; set; }
[Required]
public string UserName { get; set; }
}
La convalida funzionante ma che ora mostra il messaggio mi fa pensare che debba essere un errore di markup ma non riesco a vederlo.
Hai provato spostando la sintesi di convalida nella forma? inoltre, il validationsummary non verrà compilato con i risultati fino a quando viene fatto clic su invia – Slicksim
* facepalm * sì, il problema era avere il riepilogo al di fuori del modulo. Accenderlo come soluzione e lo accetterò. Fissandolo per circa 40 minuti e semplicemente non l'ho visto! – James
ho fatto lo stesso me stesso, avrò un occhio nero dai miei palmi del viso un giorno :) – Slicksim