如何确定View中的单选按钮?

时间:2009-09-26 17:21:04

标签: c# asp.net-mvc radio-button

在我的控制器中,我将我的值设置为true:

ViewData[itemName] = true;

然后在我看来,我试图将项目设置为true作为选择单选按钮。我尝试过以下方法:

    <%= Html.RadioButton("default",item.Name,
             ((bool)ViewData[item.Name])==null ? false:true) %> 

    <%= Html.RadioButton("default",item.Name,
             ViewData[item.Name]) %> 

    <%= Html.RadioButton("default",item.Name,
             ViewData["defaultItem"]==item.Name) %> 
    //In the case above I assigned ViewData["defaultItem"] = itemName; 

任何想法?

2 个答案:

答案 0 :(得分:1)

我根本没有看过这个特殊的问题,但我想我会帮助压缩代码。

为了使关注更简洁:

        <% if (ViewData[item.Name] == null)
           { %>
            <%= Html.RadioButton("defaultNAME", item.Name)%>
        <% }
           else
           {%>
           <%= Html.RadioButton("defaultNAME", item.Name, 
                                    (bool)ViewData[item.Name])%> 
        <% } %>

你可以这样做:

<%= ViewData[item.Name] == null ? Html.RadioButton("defaultNAME", item.Name) : Html.RadioButton("defaultNAME", item.Name, (bool)ViewData[item.Name]) %>

我知道这对你的问题没有任何帮助,但由于这是相当简单的代码,我认为这是将这八或九行压缩成一个的好方法。

祝你好运!

修改

我提交后意识到这可以缩短。只需拨打Html.RadioButton()一次电话。

<% bool defaultValue = false; %>
<%= Html.RadioButton("defaultNAME", item.Name, (bool) (ViewData[item.Name] ?? defaultValue)) %>

使用null coalescing运算符,如果ViewData [item.Name]为null,我们可以获取一些默认值。您可以随意对默认值进行硬编码,而不是在变量中指定它。我这样做只是为了让例子更加清晰。所有三个代码块在语义上都是等效的(尽管应该产生相当不同的IL,考虑到第一个块进出ASP标记)。

答案 1 :(得分:0)

在你的第二个RadioButton中,你实际上没有为“IsChecked”指定一个布尔条件。

看起来应该是这样的:

    <%= Html.RadioButton("default",item.Name,
             ViewData[item.Name] == "something") %>