Desidero sia la convalida lato client come convalida lato server. Ho capito questo come il seguente:Asp.Net MVC EnableClientValidation non funziona
Modello: (Il modello ha un DataModel (dbml), che contiene la classe di test)
namespace MyProject.TestProject
{
[MetadataType(typeof(TestMetaData))]
public partial class Test
{
}
public class TestMetaData
{
[Required(ErrorMessage="Please enter a name.")]
[StringLength(50)]
public string Name { get; set; }
}
}
Controller è niente di speciale.
The View:
<% Html.EnableClientValidation(); %>
<% using (Ajax.BeginForm("Index", "Test", FormMethod.Post,
new AjaxOptions {}, new { enctype = "multipart/form-data" }))
{%>
<%= Html.AntiForgeryToken()%>
<fieldset>
<legend>Widget Omschrijving</legend>
<div>
<%= Html.LabelFor(Model => Model.Name) %>
<%= Html.TextBoxFor(Model => Model.Name) %>
<%= Html.ValidationMessageFor(Model => Model.Name) %>
</div>
</fieldset>
<div>
<input type="submit" value="Save" />
</div>
<% } %>
Per rendere tutto questo lavoro ho aggiunto anche i riferimenti ai file js:
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
Alla fine si deve lavorare, ma non lavorare al 100%: Lo fa si convalida senza aggiornare la pagina dopo aver premuto il pulsante. Fa anche "metà" di convalida lato client. Solo quando si digita del testo nella casella di testo e si esegue il backspace del testo digitato. Viene visualizzata la convalida lato client. Ma quando provo questo toccando tra i controlli non c'è la convalida lato client.
Mi manca qualche riferimento o qualcosa del genere? (Io uso Asp.Net MVC 2 RTM)
[Here] (http://pastebin.com/685bHTHH) è il modo in cui la convalida è inclusa nella mia pagina. Tuttavia, la validazione del client non funziona affatto, vedi qualche problema? – Shimmy