如何强制Razor不生成额外的HTML属性

时间:2014-01-23 00:24:36

标签: html razor razor-2

更新1:

正如下面提到的关闭jQuery不引人注意的验证,我已将这些js文件移动到cshtml页面上。

<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate.js"></script>
<script src="~/Scripts/jquery.validate-vsdoc.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>

但问题仍然存在。


我正在使用Razor(我猜版本2)+ Twitter Bootstrap

我的页面上有一个日期时间选择器,它需要一个文本框输入。

由于纯html无法将用户输入的值绑定到相关属性,所以我必须使用Razor Html帮助器。 以下是在页面上输入文本框的两种方法。

  <input type='text' class="form-control" />

  @Html.TextBoxFor(m => m.event_date_time, new { @class = "form-control", placeholder = "Enter date and time" })

但似乎Razor帮助器为其自身的验证目的生成了额外的html属性,这些属性会干扰Boottrap以正确显示日期时间选择器。

请查看Razor Html助手生成的html代码。

<input class="form-control valid" data-val="true" data-val-date="The field event_date_time must be a date." data-val-required="The event_date_time field is required." id="event_date_time" name="event_date_time" placeholder="Enter date and time" type="text" value="1/1/0001 12:00:00 AM">

现在我的问题是:如何强制Razor Helper不生成额外的html属性?

非常感谢

1 个答案:

答案 0 :(得分:0)

我找到了一种解决方案和奇怪的解决方案。

保持我的html控件和Razor助手,然后设置html控件:display:none; 那么Razor生成的文本框将与日期时间选择器一起使用。 我知道这很奇怪,我不知道它为什么会起作用。

所以这是代码:

 <input type='text' class="form-control" style="display:none;"/>

  @Html.TextBoxFor(m => m.event_date_time, new { @class = "form-control", placeholder = "Enter date and time" })

我会在这里留下几天的答案,看看是否有人能够弄清楚它为何以这种方式运作,以及正确的方法是什么。

非常感谢。