【问题标题】:HTML Helper TextBoxForHTML 帮助器 TextBoxFor
【发布时间】:2013-04-15 10:41:46
【问题描述】:

我的 cshtlm 页面包含下一个代码:

@using (Html.BeginForm("Optional", "ConfigurationSilo2", FormMethod.Post, new { id = "storeDataForm" }))
{          
     @Html.TextBoxFor(x => x.Height)  

    <div align="right">
        <input type="submit" id="Avanti" value="@ViewRes.ConfigurationString.buttonNext" name="@ViewRes.ConfigurationString.buttonNext" />
    </div>
}

我的html生成代码是:

<form action="/ConfigurationSilo2/Optional" id="storeDataForm" method="post">

     <input data-val="true" data-val-number="The field Height must be a number." data-val-required="The Height field is required." id="Height" name="Height" type="text" value="0" />          
    <div align="right">
        <input type="submit" id="Avanti" value="Next" name="Next" />
    </div>
</form>

这是我的模型代码类:

public class Spondina
{
    public int Height { get; set; }
    public int Quantity { get; set; }
    public float UnitPrice { get; set; }
    public float TotalCost { get; set; }
}

为什么我的输入标签中有标签data-val data-val-number data-val-required

【问题讨论】:

    标签: razor asp.net-mvc-4 validationsummary


    【解决方案1】:

    这就是 MVC 验证的开始。您的模型上有数据注释吗?我猜Height 属性有[Required] 反对它?这些属性由不显眼的客户端验证框架使用。这是输入助手中添加这些标签的行:

    tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata));
    

    HtmlHelper 有一个 ClientValidationRuleFactory,它在 HtmlHelper 的构造函数中初始化,其中包括一个 ClientDataTypeModelValidatorProvider,它检查模型的元数据并在数字的情况下应用适当的验证规则例如,您的模型中的类型。如果您的模型中启用了客户端验证和数字类型,例如Height 作为 int,助手将在渲染期间将不显眼的客户端验证注入到这些输入中。

    【讨论】:

    • 如果您不想启用客户端验证,可以将“ClientValidationEnabled”和“UnobtrusiveJavaScriptEnabled”应用设置条目设置为“false”。
    • 不,我没有 Height 的任何属性。
    • 用更多根本原因更新了我的答案
    • @Erik Schierboom:我应该如何以及在哪里设置这些 appSetting?
    • @gorgonzola 您可以在项目的 Web.config 文件中找到它们。
    猜你喜欢
    • 2021-09-13
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2011-10-26
    相关资源
    最近更新 更多