ASP.NET MVC Razor对象HtmlAttributes

时间:2016-06-15 18:23:13

标签: asp.net-mvc razor asp.net-mvc-5.2

我想知道以下两种在ASP.NET MVC 5中添加对象HtmlAttributes的方法之间的区别是什么。我在foreach循环中使用了RadioButtonFor html帮助器,而我在设置收音机的name属性时遇到了问题按钮,以便我可以正确分组。我现在有工作,但我不明白为什么我找到的解决方案(这里找到的解决方案:MVC RadioButtonFor group)有效,为什么我的工作没有。

非工作方式:

<td>@Html.RadioButtonFor(m => item.PollRating, 1, new { @name = Html.DisplayFor(m => item.TickerSymbol) }) Below </td>

工作方法:

 <td>@Html.RadioButtonFor(m => item.PollRating, 2, new { Name = Html.DisplayFor(m => item.TickerSymbol) }) Flat </td>

区别在于对象htmlAttributes使用@name vs Name。每当我使用html帮助程序时我必须分配一个类或id时,我使用了@class或@id表示法,但它在这种情况下不适用于名称。 当我将鼠标悬停在Visual Studio中的@name和Name上时,我会看到相同的弹出消息:

&#34; MvcHtmlString&#39; a.Name {get;}

匿名类型:

&#39; a是新的{MvcHtmlString Name}&#34;

我使用的是Visual Studio 2015,目标.NET Framework是4.5.2,MVC版本是5.2.3.0。

1 个答案:

答案 0 :(得分:1)

当你在htm中使用@时,它意味着它是C#代码块或元素,而C#中的@是你的特殊varibles名称,其名称与系统命令相同(@ class,@ interface,@ int等)

 @// line of c# code
    @{
    //c# code body
    }

也尝试以这种方式使用你的按钮

<td>@Html.RadioButtonFor(m => item.PollRating, 2, new { Name=item.TickerSymbol }) Flat </td>