删除从razor添加的html属性或防止其添加

时间:2014-10-21 08:32:43

标签: html css asp.net-mvc razor

我正在通过Razor添加输入字段

@Html.TextBoxFor(x => x.ccVersandkosten, new { @class = "form-control" })

但它添加了一些我不想要的html属性:

<input class="form-control" data-val="true" data-val-number="Das Feld&quot;Versandkosten&quot; muss eine Zahl sein." data-val-required="Das Feld &quot;Versandkosten&quot; ist erforderlich." id="ccVersandkosten" name="ccVersandkosten" type="text" value="0" />

我不需要的属性是value="0"。我认为Razor添加了value属性,因为我的变量ccVersandkosten是一个浮点数,我可以改变它,但它需要是一个浮点数。

有没有办法删除此属性或让Razor不添加它?

3 个答案:

答案 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属性,该属性将发布到服务器并由框架验证。