我正在通过Razor添加输入字段
@Html.TextBoxFor(x => x.ccVersandkosten, new { @class = "form-control" })
但它添加了一些我不想要的html属性:
<input class="form-control" data-val="true" data-val-number="Das Feld"Versandkosten" muss eine Zahl sein." data-val-required="Das Feld "Versandkosten" ist erforderlich." id="ccVersandkosten" name="ccVersandkosten" type="text" value="0" />
我不需要的属性是value="0"
。我认为Razor添加了value
属性,因为我的变量ccVersandkosten
是一个浮点数,我可以改变它,但它需要是一个浮点数。
有没有办法删除此属性或让Razor不添加它?
答案 0 :(得分:1)
将其定义为float。 “浮动”不能为空。当模型初始化时,那么不可空变量初始化为0.这不是剃刀特征,这是c#特征。
因此剃须刀将此字段显示为0.您可以将变量定义为可为空(float? ccVersandkosten
),以便不显示值attr。
@model MyModel
表示var model = new MyModel();
,因此当您创建新类时,c#初始化不可为空的变量。 (float,int,double,datetime,..)
答案 1 :(得分:0)
Razor会根据您为其创建文本框的属性自动设置值(在本例中为x.ccVersandkosten)。这很好。
如果您希望初始值为null,则必须使ccVersandkosten可以为空。
答案 2 :(得分:0)
Razor将添加此属性,无论您的ccVersandkosten
属性的类型如何。 TextBoxFor
帮助器创建input
元素,因为input
通常用于收集数据并将其发送到服务器,所以它必须具有值。
如果您不需要属性值,则可能没有使用正确的帮助程序。您有以下几种选择:使用HiddenFor
渲染您的媒体资源,或者,如果您只想展示某些内容,请创建标准HTML label
。
根据生成的验证码判断,您的属性可能会使用[Required]
属性进行修饰。我只说“可能”,因为所有值类型属性都是自动required
。如果您专门设置[Required]
属性,那么您的input
必须具有value
属性,该属性将发布到服务器并由框架验证。