Html.RadioButtonFor单选按钮不在Safari或Chrome中渲染
问题描述:
Yikes!我的单选按钮在除Safari和Google Chrome之外的每个浏览器中呈现。Html.RadioButtonFor单选按钮不在Safari或Chrome中渲染
使用ASP.NET MVC 4,我在我的观点一书中写道的:
<!-- model property1 -->
<div class="form-group col-md-4">
@Html.LabelFor(m => m.property1)
<div class="form-control">
@Html.RadioButtonFor(m => m.property1, true)
@Html.Label("Yes")
@Html.RadioButtonFor(m => m.property1, false)
@Html.Label("No")
</div>
</div>
但最终它看起来像这样在页面上:
所以,我想给两个单选按钮唯一ID以查看它是否解决了问题:
@Html.RadioButtonFor(m => m.property1, true, new {@id = "property1_true"})
@Html.Label("Yes")
@Html.RadioButtonFor(m => m.property1, false, new {@id = "property1_false"}))
@Html.Label("No")
它没有。在Google Chrome浏览器中,HTML看起来像这样:
<!-- model property1 -->
<div class="form-group col-md-4">
<label for="property1">Lorem ipsum dolor sit amet, consectetur adipisicing elit?</label>
<div class="form-control">
<input id="property1_true" name="property1" type="radio" value="True" />
<label for="Yes">Yes</label>
<input id="property1_false" name="property1" type="radio" value="False" />
<label for="No">No</label>
</div>
</div>
我为Windows和Chrome 37.0运行Safari 5.1.7。
答
经过多次调查,解决方案非常简单。我没有检查CSS不够仔细:
input:not([type='checkbox']) {
-webkit-appearance: none;
}
所以它不是一个真正的浏览器兼容性问题,也不是一个编码的问题,也不是一个畸形的HTML问题(等等等等)。
在控制台上的那些浏览器上,您是否看到任何错误?你还可以发布这些浏览器呈现的HTML吗? – 2014-10-01 16:36:40
@Matt感谢您的回复。我添加了Chrome提供的HTML。我相信Safari会以同样的方式渲染它,但如果需要,我会愿意进行仔细检查。至于控制台错误,我遇到了与jQuery-migrate相关的错误:'JQMIGRATE:日志记录处于活动状态 JQMIGRATE:jQuery.event.handle未被记录并被弃用,等等。我不相信这个错误与这个问题有关。 – alex 2014-10-01 18:51:49
有趣的是,标签在那里和正确,但他们不显示。出于好奇,如果你把渲染的代码放到你的视图中而不是辅助器中,那么它会正确渲染吗? – 2014-10-01 18:58:24