Ich folge diesem post.xVal - Erzeugt nur Regeln für das ID-Feld
Serverseitige Validierungen funktionieren wie erwartet. Aber die clientseitigen Validierer werden nur für das ID-Feld generiert.
Meine Linq2Sql Entity-Klasse hat zwei Eigenschaften ID & Kategorie und unten ist meine Metadaten Klasse
[MetadataType(typeof(BookCategoryMetadata))]
public partial class BookCategory{}
public class BookCategoryMetadata
{
[Required]
[StringLength(50)]
public string CategoryName { get; set; }
}
Methode eine Kategorie
/// <summary>
/// Adds the category.
/// </summary>
/// <param name="category">The category.</param>
public void AddCategory(BookCategory category)
{
var errors = DataAnotationsValidationHelper.GetErrors(category);
if (errors.Any()) {
throw new RulesException(errors);
}
_db.BookCategories.InsertOnSubmit(category);
_db.SubmitChanges();
}
Aktion erstellen in der Steuerung hinzufügen
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "ID")]BookCategory category)
{
try {
_repository.AddCategory(category);
} catch (RulesException ex) {
ex.AddModelStateErrors(ModelState, "");
}
return ModelState.IsValid ? RedirectToAction("Index") : (ActionResult)View();
}
Und die Ansicht
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="CategoryName">CategoryName:</label>
<%= Html.TextBox("CategoryName") %>
<%= Html.ValidationMessage("CategoryName", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
<%= Html.ClientSideValidation<BookCategory>() %>
Jetzt Validierungsregeln für das ID-Feld xVal erzeugt nur.
<script type="text/javascript">xVal.AttachValidator(null, {"Fields":[{"FieldName":"ID","FieldRules":[{"RuleName":"DataType","RuleParameters":{"Type":"Integer"}}]}]})</script>
Die serverseitige Validierung für CategoryName funktioniert einwandfrei. Warum generiert xVal keine Validierungsregeln für den CategoryName? Was mache ich falsch?
Können Sie es als beantwortet, bitte, basierend auf Ihrem letzten Kommentar. Vielen Dank. – andymeadows