Unrequired propriété ne cesse de données-val-attribut obligatoire
C'est le modèle avec ses de validation:
[MetadataType(typeof(TagValidation))]
public partial class Tag
{
}
public class TagValidation
{
[Editable(false)]
[HiddenInput(DisplayValue = false)]
public int TagId { get; set; }
[Required]
[StringLength(20)]
[DataType(DataType.Text)]
public string Name { get; set; }
//...
}
Ici est le point de vue:
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Tag</legend>
<div>@Html.EditorForModel()</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Et voici ce qui est renderd:
<form action="/Tag/Create" method="post">
<fieldset>
<legend>Tag</legend>
<div><input data-val="true" data-val-number="The field TagId must be a number." data-val-required="The TagId field is required." id="TagId" name="TagId" type="hidden" value="" />
<div class="editor-label"><label for="Name">Name</label></div>
<div class="editor-field"><input class="text-box single-line" data-val="true" data-val-length="The field Name must be a string with a maximum length of 20." data-val-length-max="20" data-val-required="The Name field is required." id="Name" name="Name" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span></div>
...
</fieldset>
</form>
Le problème est que TagId de validation est généré althoug thare est pas Nécessaire attribut défini sur TagId de la propriété. De ce fait je ne peux même pas passer la validation côté client afin de créer de nouveaux Balise en db.
Ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse. Il suffit d'ajouter ce pour
Application_Start
:RequiredAttribute
est implicitement utilisé, plutôt que de simplement la désactivation de cette fonctionnalité?De rendre la vue-modèle de valeur-les types nullables. Ensuite, ils ne seront pas Requis par défaut.
Notez également que si vous mettez l'attribut " required="false"' en html 5 (si vous avez réglé html 5 dans votre doctype méta-données), il va voir "nécessaire" et de le rendre obligatoire. Vous pouvez utiliser dojo-données-props="requis:false".
frennky la solution n'a retiré
data-val-required
mais dans mon cas, j'ai toujours eudata-val-number
etdata-val
J'ai dû ajouter les deux lignes ci-dessous pour Application_Start à se débarrasser de tout.
Le problème est que la valeur du champ caché est vide. Cela ne devrait pas arriver si vous utilisez de type entier. Je suppose que le TagId propriété est définie comme un type nullable dans le
Tag
classe. Donc, soit il affecter une valeur avant le rendu de la vue ou de l'utilisation d'un type entier:de sorte que le champ caché ressemble à ceci:
Aussi normalement la validation côté client ne devrait pas être déclenché pour ce champ caché.
jquery valider cible cheque "désactivé" attribut html.
ou utiliser les valeurs null.
espère que ce code!
Avec MVC4 vous pouvez également utiliser cette:
Faire de votre Modèle ou de la Vue-Modèle de la propriété des types de valeur "nullabel". Cela permettra de résoudre votre problème.Une chose importante que de supprimer les "requis" attribut de la balise sinon il faudra que je "nécessaire"
Exemple:-
Ici dans l'exemple foo est entier type nullable, ce ne sera plus nécessaire dans mvc.
Espère que cela va vous aider.