ASP.NET中RadioButtonFor如何显示值并提交对应Id?
解决单选按钮显示Title.Value但提交Id的问题
这个问题很好解决,核心就是把单选按钮的提交值和显示文本分开处理就行,咱们一步步来改:
首先,你之前的视图代码里有个小问题:ViewBag.TitleList是List<Title>集合,不是字符串列表,所以foreach (String val in ViewBag.TitleList)会报错,得先把循环对象改成Title类型。
然后是关键逻辑:
RadioButtonFor的第二个参数要传title.Id(这是提交到后台的值,对应Client模型的Title字段)- 在单选按钮后面直接输出
title.Value,这是给用户看的显示文本
修改后的视图代码如下:
<div> @Html.LabelFor(model => model.Title) @foreach (var title in ViewBag.TitleList as List<Title>) { <div class="radio-item"> @Html.RadioButtonFor(model => model.Title, title.Id) @title.Value </div> } </div>
如果是编辑场景,这个写法还能自动处理默认选中:RadioButtonFor会自动对比model.Title的值和当前循环的title.Id,相等的话会自动给单选按钮加上checked属性,不用额外写判断逻辑。
后台接收的时候,Client模型的Title字段会直接拿到选中项的Id,完全符合你的需求。
内容的提问来源于stack exchange,提问作者refresh
相关产品推荐
相关产品推荐

