在我的控制器中,我将我的值设置为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;
任何想法?
答案 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") %>