我构建了一个流畅的帮助器,用于在ASP MVC中构建一个html表单。 但客户端验证在此背景下工作。 请帮助我理解为什么在我的帮助器中“EditorFor”不添加客户端验证。
@using (Html.BeginForm())
{
var html = Html.TextBoxFor(c => c.UserName); // Good example client validation
<input type="submit" value="ok" />
}
@FormHelpers.Form(Html.Form()
.Title("Connection utilisateur")
.Error("")
.AddMessage("Entrez vos identifiant.")
.AddRow(row => row
.AddField(
"Nom utilisateur",new EditItem()
{
Value = Html.TextBoxFor(model => model.UserName),
// Validation client is not added !
Error = Html.ValidationMessageFor(model => model.UserName),
}
))
.AddRow(row => row
.AddField(
"Mot de passe",
Html.Edit(model => model.Password)))
.AddRow(row => row
.AddField(
"Se souvenir<br/> de moi",
Html.Edit(model => model.Souvenir)))
.Build())
My Builder方法:
public FormViewModelBuilder AddRow(Func<FormRowViewModelBuilder, FormRowViewModelBuilder> rowBuildFunc)
{
FormRowViewModelBuilder builderRow = new FormRowViewModelBuilder();
FormRowViewModel row = rowBuildFunc(builderRow).FormRowViewModel;
FormViewModel.AddRow(row);
return this;
}
public FormRowViewModelBuilder AddField(string title, EditItem value)
{
FormFieldViewModel info = new FormFieldViewModel();
info.Title = title;
info.EditItem = value; **// Validation is not added !**
FormRowViewModel.Fields.Add(info);
return this;
}
答案 0 :(得分:0)
你启用了吗
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
在你的web.config文件中?你加载了mvc javascript文件吗?
<script src="@Url.Content("~/Scripts/jquery.tools.min.js")" type="text/javascript"></script>
<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>
答案 1 :(得分:0)
我有解决方案,但我不明白Mvc Form与生成客户端验证进行交互。 简单的解决方案:
@using (Html.BeginForm())
{
@FormHelpers.Form(Html.Form()
.Title("Connection utilisateur")
.Error("")
.AddMessage("Entrez vos identifiant.")
.AddRow(row => row
.AddField(
"Nom utilisateur",new EditItem()
{
Value = Html.TextBoxFor(model => model.UserName),
// Validation client is not added !
Error = Html.ValidationMessageFor(model => model.UserName),
}
))
.AddRow(row => row
.AddField(
"Mot de passe",
Html.Edit(model => model.Password)))
.AddRow(row => row
.AddField(
"Se souvenir<br/> de moi",
Html.Edit(model => model.Souvenir)))
.Build())
}
或者
//Contructor
public FormViewModelBuilder(MvcForm mvcForm)
{
this.FormViewModel.MvcForm = mvcForm;
}
// Builder methode, Must be called in last
public FormViewModel Build()
{
this.FormViewModel.MvcForm.EndForm();
return FormViewModel;
}