更新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属性?
非常感谢
答案 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" })
我会在这里留下几天的答案,看看是否有人能够弄清楚它为何以这种方式运作,以及正确的方法是什么。
非常感谢。