【问题标题】:ASP MVC Client validation and fluent helperASP MVC 客户端验证和流利的助手
【发布时间】:2011-07-10 14:31:57
【问题描述】:

我为在 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())

我的 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;
    }

【问题讨论】:

    标签: html asp.net-mvc fluent


    【解决方案1】:

    你启用了吗

    <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>
    

    【讨论】:

    • 是的,我有很好的脚本和 web.config 配置。问题是流利的编辑器不在 MvcForm 块中。
    【解决方案2】:

    我有解决方案,但我不明白 MvcForm 与生成客户端验证交互。 简单的解决方案:

    @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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-23
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多