2013-03-07 60 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; 
     } 
    } 
}