ASP.NET MVC Razor 对象 HtmlAttributes

ASP.NET MVC Razor object HtmlAttributes

我想知道以下两种在 ASP.NET MVC 5 中添加对象 HtmlAttributes 的方法之间的区别是什么。我在 foreach 循环中使用 RadioButtonFor html 助手,我正在麻烦设置单选按钮的名称属性,以便我可以正确地将它们分组。我现在可以使用它了,但我不明白为什么我找到的解决方案(在这里找到的解决方案: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>

不同之处在于对象 html 属性使用 @name 与名称。每当我在使用 html 助手时必须分配 class 或 id 时,我都会使用 @class 或 @id 表示法,但在这种情况下它对名称不起作用。 当我将鼠标悬停在 Visual Studio 中的@name 和 Name 上时,我看到了相同的弹出消息,其中指出:

"MvcHtmlString'a.Name {get;}

匿名类型:

'a 是新的 {MvcHtmlString 名称}"

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

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

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

你的按钮也试试这样用

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