2012-12-13 62 views
5

我遇到了HtmlHelper,RadioButtonFor和我的模型中的枚舉問題。我有一個強類型的視圖,我希望複選框切換我的枚舉屬性。MVC3 RadioButtonFor與枚舉

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); 
} 

如果我在控制器設定的myProperty的值,所述單選按鈕按預期進行檢查。但是,在發佈到下一個嚮導步驟(將模型作爲參數)後,該屬性未設置。

如果它能幫助你理解我的意思:如果它是C#和WPF,我會使用IValueConverter。

btw:我使用HtmlHelper.ActionLink將模型傳遞給控制器​​。

在此先感謝

回答

2

對不起,任何不便相匹配。在發佈後,我很快找到了解決方案。我的ActionLink沒有提交@ Html.BeginForm表單。所以我改變我的單選按鈕爲:

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

它將正確的值提交給我的控制器。目前這沒關係。也許ActionLink可以回發表單數據。

+0

您可能會考慮將此答案標記爲已接受 – rossipedia

2

試試這個,它應該工作,我也做了同樣的事情之前:

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

通知書投給int,它確保了正確的值用於HTML。

編輯:對不起,我想你還需要第三個參數來確保加載視圖時設置了正確的單選按鈕。

我還假設MyPropi是一個錯字,並把它改成MyProp,請確保該正確你到底

+0

我很害怕,但還是不行。我的問題是:如何獲取正確的值,取決於哪個單選按鈕被切換到我的模型中。此刻,我通過ActionLink將模型路由到控制器中。 @ Html.ActionLink(「下一個」,「WizardSecondStep」,模型) – csteinmueller

+1

我明白了。所以這是行不通的,如果你希望模型綁定起作用,你需要在每一步發佈你的表單。因此,而不是一個ActionLink使用提交按鈕來發布表單。將模型作爲您的發佈方法的參數 – musefan

-1

對於ASPX頁面: <%:Html.RadioButtonFor(M => m.YourProp,你枚舉的設定值,如:demo1.enum1.value2)