2013-03-07 33 views
1

我使用MVC3和Razor視圖,我用正確的數據Razor視圖捕獲RadioButtonFor與枚舉源

填充HelperModel

public partial class Visibility 
    { 
     public enum VisibilityLevel { ShowThis, HideThis, HideAll } 
     ... 
    } 
public partial class Address 
    { 
     public Visibility.VisibilityLevel Visibility{ 
      get { 
       ... 

查看

@Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.ShowThis) <span>Show @Model.TYPE_DESC address</span><br /> 
    @Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.HideThis) <span>Don't show @Model.TYPE_DESC address </span><br /> 
    @Html.RadioButtonFor(m => m.HIDE_DATA, Models.Visibility.VisibilityLevel.HideAll) <span>Don't show ANY addresses</span><br /> 
視圖

控制器

// 
// POST: /Address/Edit/5 

[HttpPost] 
public ActionResult Edit(Address addr,string submitButton) 
{ 
    ... 

這會根據數據和模型定義正確填充頁面,但回發不會獲得新值。當我檢查控制器時,在提交時傳遞的地址模型具有RadioButton的原始值,而不是由用戶選擇或更改的值。我錯過了什麼?

+0

除了使用枚舉值,只投他們爲int? – mattytommo 2013-03-07 14:33:47

回答

0

原來不是枚舉的問題,我的自定義屬性沒有setter。

改變

HelperModel

Visibility.VisibilityLevel _vizibility; 

    public Visibility.VisibilityLevel Visibility{ 
     get { 
      if (_vizibility != Models.Visibility.VisibilityLevel.ShowThis) //the default 
       return _hide_data; 
      var ans = new MacDirectEntities() 
      ... 
      return ans.Visibility; 
     } 
     set { 
      _vizibility= value; 
     } 
    } 
}