2017-02-05 9 views
1

をモデル化するために、ラジオボタンの選択された値をバインド私はかみそりビューで中に使用されているページビューモデルプロパティ

@model Abc.Ecomm.ViewModels.AddressViewModel 

AddressViewModelが財産

public string AddressId { get; set; } 

そして、私がしようとしているを持っている必要があり私のモデルのAddressIdにその値をバインドする必要があるラジオボタンを生成する

@Html.RadioButtonFor(m => m.AddressId ,"NA",new { name="" , id="NA"}) 

しかし、提出されたときに値がバインドされていません。 何が間違っているのか、間違っている可能性がありますか?

+1

あなたが表示したコードは結構です( 'new {name =" "}は無意味なので削除する必要があります)あなたのPOSTメソッドの署名は何ですか? ajaxを使用して)? –

答えて

2

注:以下の答えは間違っています。私はそれを削除しますが、このコメントはASP.NET MVCフレームワークの興味深い動作を指摘しています。


ASP.NET MVCでモデルバインディングを実行すると、モデルはname属性を介してバインドされます。

この属性を明示的に消去することで、これを防ぐことができます。

だけのように変更します。HTMLフォームは、キーと値のペアのセットとしてバックサーバに値を送信し、各キーは、対応するHTML入力コントロールのname属性であることを理解し

@Html.RadioButtonFor(m => m.AddressId ,"NA",new { id="NA"}) 

+0

OPのコードの 'new {name =" "}'は何もしません( 'name'属性を変更しません) –

+0

@Andrew私はこれを行いましたが、それでも動作しません 実際には' m => m.' .....理想的には、VS2015で提案をドロップダウンする必要があります....私もそれを取得していません。 – GilliVilla

+1

@StephenMuecke OK、悪い推測私の部分では、私はフレームワークの興味深い動作を強調表示するので、この誤った答えを残します。 –

2

メインビューにサブミットボタンがある部分ビューで、フォーム自体のレイザーコードがありました。私はフォームのタグをメインビューに移動させて、ラジオボタンを囲みました。

初等的な間違い。

私はここにこれを答えると、それを受け入れて生きているこの答えを保管しております - だけではなく、この間違いを強調するのではなく、@Html.RadioButtonFor

1
のためにいくつかのオーバーライド行動との関連用途に光を当て、その下アンドリュー/スティーブンによって答えのコメント

これを試してもらえますか?

Html.RadioButtonFor(m => m.AddressId , 1, new { id = "1"}) 
Html.RadioButtonFor(m => m.AddressId , 2, new { id = "2"}) 
.......