大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 EditorTemplate,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@model bool? <div data-ui="buttonset"> @Html.RadioButtonFor(x => x,true,new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes"}) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))Yes">Yes</label> @Html.RadioButtonFor(x => x,false,new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))No">No</label> @Html.RadioButtonFor(x => x,"null",new { id = ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA" }) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))NA">N/A</label> </div>
我的问题是,在任何情况下,我都不能得到这个编辑器模板来正确显示模型的当前值。因为我没有在这个范围渲染一个模型的属性,而是模型本身,所以MVC3内置的逻辑将不会正确设置checked属性,因为这样做是为了验证名称不为空或者为空(参见MVC3 source,InputExtensions.cs:line#259)。我不能通过与模型进行比较来动态地设置被检查的属性,因为浏览器在检查属性不存在的情况下检查单选按钮是不是值,所以即使我的单选按钮看起来像下面那样,最后一个仍然是被选中的。
<div class="span-4" data-ui="buttonset"> <input checked="checked" id="MyObject_BooleanValueYes" name="MyObject.BooleanValue" type="radio" value="True" /><label for="MyObject_BooleanValueYes">Yes</label> <input checked="" id="MyObject_BooleanValueNo" name="MyObject.BooleanValue" type="radio" value="false" /><label for="MyObject_BooleanValueNo">No</label> <input checked="" id="MyObject_BooleanValueNA" name="MyObject.BooleanValue" type="radio" value="null" /><label for="MyObject_BooleanValueNA">N/A</label> </div><span class="field-validation-valid" data-valmsg-for="MyObject.BooleanValue" data-valmsg-replace="true"></span> </div>
我不能有条件地添加HtmlAttribute使用类似if?truevalue:falsevalue因为TRue / false部分将是不同的匿名类型,我收到一个错误。
我正在努力如何做到这一点,希望你们中的一个有一个建议如何解决这个问题?
@model bool? <div data-ui="buttonset"> @{ Dictionary<String,object> yesAttrs = new Dictionary<String,object>(); Dictionary<String,object> noAttrs = new Dictionary<String,object> nullAttrs = new Dictionary<String,object>(); yesAttrs.Add("id",ViewData.TemplateInfo.GetFullHtmlFieldId("") + "Yes"); noAttrs.Add("id",ViewData.TemplateInfo.GetFullHtmlFieldId("") + "No"); nullAttrs.Add("id",ViewData.TemplateInfo.GetFullHtmlFieldId("") + "NA"); if (Model.HasValue && Model.value) { yesAttrs.Add("checked","checked"); } else if (Model.HasValue && !Model.value) { noAttrs.Add("checked","checked"); } else { nullAttrs.Add("checked","checked"); } } @Html.RadioButtonFor(x => x,"true",yesAttrs) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))Yes">Yes</label> @Html.RadioButtonFor(x => x,"false",noAttrs) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))No">No</label> @Html.RadioButtonFor(x => x,nullAttrs) <label for="@(ViewData.TemplateInfo.GetFullHtmlFieldId(""))NA">N/A</label> </div>
以上是大佬教程为你收集整理的asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 EditorTemplate全部内容,希望文章能够帮你解决asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 EditorTemplate所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。