【问题标题】:MVC 5 checking RadioButtonFor based on modelMVC 5 基于模型检查 RadioButtonFor
【发布时间】:2015-11-01 00:51:22
【问题描述】:

我有一个问题,我找不到解决办法。

这样的检查按钮有效:

@Html.RadioButtonFor(x => x.an2[0], 3, Model.an2[0]==3 
    ? new { id = "B", @checked = "checked" } : null)

但是我还需要设置id,我该怎么做呢?这段代码:

@Html.RadioButtonFor(x => x.an2[0], 3, Model.an2[0]==3 
    ? new { id = "B", @checked = "checked" } : new { id = "B" })

给出错误:

无法确定条件表达式的类型,因为 'AnonymousType#1' 和 'AnonymousType#2' 之间没有隐式转换

这超出了我的理解。

我想应该有一个简单的解决方案?

【问题讨论】:

  • 虽然 Sam Farajpour Ghamari 的回答向您展示了如何创建条件 html 属性,但在您的情况下完全没有必要。在使用RadioButtonFor() 时,您永远不应设置checked 属性。如果您绑定到的属性,助手已经根据值设置它(如果不是,那么您的代码有其他问题)
  • 我试过了,但在我的情况下不起作用。我试图创建的是一个测试,用户在部分视图中切换并选择他/她认为正确的答案。如果转到上一个部分视图,我希望检查以前选择的答案(单选按钮),但可以更改。通过我的代码和 Sam 的更正,想要的效果发生了。如果我删除了“已检查”部分,则它不会,即使包含 an2 列表的模型来回传递。
  • 那么你的代码中还有其他问题,所以也许你也应该考虑解决这个问题")

标签: asp.net-mvc asp.net-mvc-5


【解决方案1】:

检查这个link

@{string id = ViewData.TemplateInfo.GetFullHtmlFieldId("radioTrue");}
@Html.RadioButtonFor(x => x.an2[0], 3, Model.an2[0]==3 ? new { id } : null)

here 就是一个很好的例子。

【讨论】:

    【解决方案2】:

    投到object:

    Html.RadioButtonFor(x => x.an2[0], 3, Model.an2[0]==3 
        ? (object)new { id = "B", @checked = "checked" } : (object)new { id = "B" });
    

    【讨论】:

    • 行得通!我什至不知道在这种情况下可以进行投射。
    猜你喜欢
    • 2016-06-23
    • 1970-01-01
    • 2012-11-22
    • 2019-02-21
    • 2014-01-17
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多