asp.net-mvc - asp.net mvc3 基于模型检查单选按钮

标签 asp.net-mvc asp.net-mvc-3

我有一个看似简单的任务,即根据模型的 bool 值设置“选中”单选按钮。我的模型“IsSDPDonor”中有一个 bool 值,我想将它用于是/否单选按钮。如果“IsSDPDonor”为 true,则应检查“Yes”单选按钮;如果为 false,则应检查“No”单选按钮。我尝试使用下面的代码,但它总是检查“否”单选按钮。

 @Html.Label("Would You Like to Donate Platelets (SDP)") : 
 @Html.RadioButtonFor(m => m.Donor.IsSDPDonor, true, new {@checked = Model.Donor.IsSDPDonor ? "checked" : ""}) Yes 
 @Html.RadioButtonFor(m => m.Donor.IsSDPDonor, false, new { @checked = !Model.Donor.IsSDPDonor ? "checked" : "" }) No

我有点沮丧,所以我想我宁愿接受一些帮助。基本上,HTML 语法表示仅放置“Checked”属性,而不添加任何值来检查单选按钮。我想知道如何使用 MVC3 razor 语法来做到这一点。

最佳答案

在代码块中创建 HTML 选项,如果不应检查按钮,则将它们保留为空,然后在帮助程序中使用正确的变量。

@{
    var yesOptions = Model.Donor.IsSDPDonor ? new { @checked = "checked" } : null;
    var noOptions =  Model.Donor.IsSDPDonor ? null : new { @checked = "checked" };
}
@Html.Label("Would You Like to Donate Platelets (SDP)") : 
@Html.RadioButtonFor(m => m.Donor.IsSDPDonor, true, yesOptions ) Yes 
@Html.RadioButtonFor(m => m.Donor.IsSDPDonor, false, noOptions ) No

编辑:查看源代码后,在我看来,应该根据模型的值设置此属性。您是否尝试过完全省略 HTML 属性?

case InputType.Radio:
    if (!usedModelState) {
        string modelStateValue = htmlHelper.GetModelStateValue(name, typeof(string)) as string;
        if (modelStateValue != null) {
            isChecked = String.Equals(modelStateValue, valueParameter, StringComparison.Ordinal);
            usedModelState = true;
        }
    }
    if (!usedModelState && useViewData) {
        isChecked = htmlHelper.EvalBoolean(name);
    }
    if (isChecked) {
        tagBuilder.MergeAttribute("checked", "checked");
    }
    tagBuilder.MergeAttribute("value", valueParameter, isExplicitValue);
    break;

关于asp.net-mvc - asp.net mvc3 基于模型检查单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111942/

相关文章:

c# - .net/C# 的 Html 解析器和对象模型

c# - IActionResult 误解

asp.net-mvc - 使用 IIS 时如何在 MVC 中格式化 RequireJS 的依赖项名称?

asp.net-mvc - ASP.NET MVC3,Html.TextAreaFor 没有编码?

jquery - MVC 3 客户端对带有数据注释的集合进行验证 - 不起作用

asp.net-mvc-3 - 如何将虚拟值添加到 MVC3 中的下拉列表

jQuery使用jQuery的ajax方法上传文件(无需插件)

asp.net-mvc - 如何在 MVC 3 和 MVC 4 项目之间共享 web.config 文件

c# - 如何首先循环遍历 Entity Framework 4.1 代码中的子对象列表

.net - 无法获取 C# .net 下拉列表的 linq 字符串和 int concat