2014-09-30 53 views
1

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> 

但最终它看起来像这样在页面上:

all of my buttons ran away

所以,我想给两个单选按钮唯一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。

+1

在控制台上的那些浏览器上,您是否看到任何错误?你还可以发布这些浏览器呈现的HTML吗? – 2014-10-01 16:36:40

+0

@Matt感谢您的回复。我添加了Chrome提供的HTML。我相信Safari会以同样的方式渲染它,但如果需要,我会愿意进行仔细检查。至于控制台错误,我遇到了与jQuery-migrate相关的错误:'JQMIGRATE:日志记录处于活动状态 JQMIGRATE:jQuery.event.handle未被记录并被弃用,等等。我不相信这个错误与这个问题有关。 – alex 2014-10-01 18:51:49

+1

有趣的是,标签在那里和正确,但他们不显示。出于好奇,如果你把渲染的代码放到你的视图中而不是辅助器中,那么它会正确渲染吗? – 2014-10-01 18:58:24

回答

0

经过多次调查,解决方案非常简单。我没有检查CSS不够仔细:

input:not([type='checkbox']) { 
    -webkit-appearance: none; 
} 

所以它不是一个真正的浏览器兼容性问题,也不是一个编码的问题,也不是一个畸形的HTML问题(等等等等)。