2012-12-13 20 views
5

私のモデルでは、HtmlHelper、RadioButtonFor、enumに問題があります。私は強く型付けされたビューを持っている、私はチェックボックスを私のenumプロパティを切り替えるします。MVC3 RadioButtonFor with enum

Enum.cs 

public enum Values{ 
    Value1, 
    Value2 
} 

Model.cs 

public class Model{ 
    public Values MyProp{ get; set; } 
; 

View.cshtml 

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1) 

Controller.cs 
public ActionResult WizardFirstStep() 
{ 
    var model = new Model(); 
    return View(model); 
} 

IはコントローラにMYPROPERTY値を設定した場合、期待どおり、ラジオボタンがチェックされます。しかし、モデルをパラメータとして取得する次のウィザードステップへのポストの後、プロパティは設定されません。

私が意味することを理解するのに役立ちます:もしそれがC#とWPFなら、私はIValueConverterを使います。

btw:コントローラにモデルを取得するためにHtmlHelper.ActionLinkを使用します。 int

@Html.RadioButtonFor(model => model.MyProp, (int)Values.Values1, model.MyProp == Values.Values1) 

お知らせキャストをそれが正しい値がHTMLのために使用されることを保証、:私は前に同じことを行っているよう

答えて

2

は申し訳ありませんが、あなたの末尾に正しく一致することを確認してください。ここに投稿した後、私は非常に迅速に解決策を見つけました。私のActionLinkは@ Html.BeginFormフォームを提出していませんでした。そこでラジオボタンを変更しました:

@Html.RadioButtonFor(model => model.MyPropi, Values.Values1, new{ onClick = "this.form.submit();" }) 

これは私のコントローラに正しい値を送信します。今のところこれは大丈夫です。アクションリンクがフォームデータをポストバックする可能性があります。 ASPXページの場合

+0

あなたはこの回答を受け入れたものとしてマークすることを検討するかもしれません – rossipedia

2

はこれを試してみてください、事前に

おかげで、それは動作するはずです。

EDIT:申し訳ありませんが、ビューを読み込むときに正しいラジオボタンが設定されていることを確認するには、3番目のパラメータも必要です。

私もMyPropiを想定し、タイプミスだったとMyPropにそれを変更し、これはご不便ため

+0

私は怖いが、それは動作しません。 。私の問題は、どのラジオボタンがトグルされているかに応じて、自分のモデルに正しい値を取得する方法です。現時点では、モデルにActionLink経由でコントローラをルーティングしています。 @ Html.ActionLink( "next"、 "WizardSecondStep"、Model) – csteinmueller

+1

私は参照してください。それでうまくいかない場合は、モデルバインディングが機能するようにするには、フォームごとにフォームを投稿する必要があります。したがって、ActionLinkではなく、送信ボタンを使用してフォームを送信します。あなたの投稿メソッドのパラメータとしてモデルを持っている – musefan

-1

: <%:Html.RadioButtonFor(M => m.YourProp、のようなあなたの列挙型の選択値:demo1.enum1.value2)