2016-06-15 14 views
0

ASP.NET MVC 5でオブジェクトHtmlAttributesを追加する次の2つの方法の違いは何ですか?foreachループでRadioButtonFor HTMLヘルパを使用していて、問題が発生しましたラジオボタンの名前属性を正しくグループ化できるように設定します。私は今働いているが、なぜ私が見つけた解決策(ここにある解決策:MVC RadioButtonFor group)がなぜ働いているのか理解できない。ASP.NET MVC RazorオブジェクトHtmlAttributes

非加工方法:

<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を使用しています。 htmlヘルパーを使用してクラスやIDを割り当てなければならないときは、@ classまたは@id表記を使用しましたが、このシナリオでは名前は使用できません。 私が述べ同じポップアップメッセージが表示Visual Studioで@nameと名前の上に置くと:「MvcHtmlString 'a.Name {取得;}

匿名型:

'

を新しいものです{MvcHtmlString Name} "

Visual Studio 2015を使用しています。ターゲット.NET Frameworkは4.5.2、MVCバージョンは5.2.3.0です。

+0

であなたのボタンを使用してみてください(http://stackoverflow.com/questions/6057865/asp-net-mvc-3-override-name-attribute-with-textboxfor)と[here](http://stackoverflow.com/questions/23912263/how-to-override-th e-name-htmlattribute-of-razor))。それ以外の場合、 '@ class'はC#の予約された" class "キーワードをエスケープします。 '@'は' id'を使うだけで '@'は必要ありません。 – Jasen

+0

私のためにこれを明確にしていただきありがとうございます。 – FittyFrank

+0

'HtmlHelper'メソッドを使用しているときにあなたのアプリが失敗しないようにするために、' name'属性をオーバーライドしないでください。実装は意味をなさないので、何かに正しくバインドされません。そして、あなたがこれをループで行うなら、 'for(int i = 0; i m [i] .TickerSymbol、1)@ Html.RadioButtonFor( m => m [i] .TickerSymbol、2)} ' –

答えて

-1

@ htmを使用すると、C#のコードブロックまたは要素であることを意味し、C#では@はシステムのcomand(@ class、@interface、@intなどと同じ名前) )

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

も(こちらを参照それはあなたが `name`の属性をオーバーライドする方法を説明しますので、このよう

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

ご協力いただきありがとうございます。 Name = item.TickerSymbolを使用すると、以前のコードよりもはるかにクリーンで、うまく動作します。 – FittyFrank

関連する問題