代码之家  ›  专栏  ›  技术社区  ›  Geo

如何确定视图中打开的单选按钮?

  •  0
  • Geo  · 技术社区  · 16 年前

    在我的控制器中,我将值设置为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 回复  |  直到 16 年前
        1
  •  1
  •   JoshJordan    16 年前

    我根本没有考虑过这个特殊的问题,但我想我可以帮忙压缩一下代码。

    为了使下面的内容不那么冗长:

            <% 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)) %>
    

    如果viewdata[item.name]为空,我们可以使用空合并运算符获取一些默认值。可以随意硬编码默认值,而不是在变量中指定它。我这样做只是为了让例子更清楚。所有三个代码块在语义上都是等价的(尽管考虑到第一个块在asp标记中进出,应该会产生相当不同的il)。

        2
  •  0
  •   Robert Harvey    16 年前

    在第二个单选按钮中,实际上并没有为“ischecked”指定布尔条件。

    应该是这样的:

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