asp.net-mvc – 使用RadioButtons的可空值布尔的MVC3 EditorTemp
发布时间:2020-12-16 00:28:32 所属栏目:asp.Net 来源:网络整理
导读:我有一个属性在我的一个对象是一个可空的布尔值,我希望我的逻辑具有真实的代表是,假为否,空为N / A。现在因为我将在许多不同的对象上拥有这样的多个属性,所以编辑器和显示这些属性的模板是最有意义的。我将使用jQuery UI应用一个可视元素的按钮,这是所
我有一个属性在我的一个对象是一个可空的布尔值,我希望我的逻辑具有真实的代表是,假为否,空为N / A。现在因为我将在许多不同的对象上拥有这样的多个属性,所以编辑器和显示这些属性的模板是最有意义的。我将使用jQuery UI应用一个可视元素的按钮,这是所有的工作,但现在,这超出了我的问题的范围。我的编辑器模板看起来像这样。
@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 – 使用[WebMethod]转义的JSON响应
- ‘ASP._Page_sitecore_shell_client_Speak_Layouts_Layouts
- 模型 – 视图 – 控制器 – ASP.NET MVC:使用SendAsync发送
- asp.net-mvc – ASP.NET MVC:返回FileResult时如何设置编码
- 如何在ASP.net c#中的页面之间传递对象而不是值?
- asp.net-mvc-4 – 如果使用实体连接字符串(与SQL连接字符串
- asp.net-core – 如何在Visual Studio 2015 RC中为ASP.NET
- asp.net – 加速自动完成的Web服务并避免过多的方法调用
- asp.net – Microsoft MVC“echo / print / output”等
- 如果是Razor DisplayFor和TextBoxFor MVC4中的其他逻辑
推荐文章
站长推荐
- 如何将页面从asp.net发布到经典ASP
- asp.net – 在proc中使用sp_executesql时出现“s
- asp.net – System.Data.EntityCommandExecution
- asp.net-mvc-3 – 实体框架检测到冲突的更改.尝试
- 什么是 ASP+?微软 .NET 框架
- ASP.Net MVC cookies – 防篡改?
- asp.net – CKEditor在更新面板中无法正常工作
- asp.net-mvc-3 – 在ASP.NET MVC中,“<%=”,“<
- asp.net – 将tracelistener添加到web.config
- 动手造轮子:实现一个简单的 AOP 框架
热点阅读