模型Binder问题

时间:2013-01-29 17:28:49

标签: c# asp.net-mvc model-binding

我在viewmodel上有一个只读属性,用于计算各种其他属性的值。我不希望帖子上的模型绑定器读取它,因为并非所有的源属性都可用。

public class MyView
{
     public int MyReadOnlyProperty
     {
         get 
         {
             int result;
             //do stuff 
             return result;
         }
     }
}

我在控制器方法中添加了[Bind(Exclude)]属性,如下所示:

[HttpPost]
public ActionResult Create([Bind(Exclude = "MyReadOnlyProperty")]MyView viewModel)
{
}

但是,活页夹仍然会读取排除的属性。所以当我回发到上面的控制器方法时,执行MyReadOnlyProperty getter;但之前调用控制器方法。粘合剂在帖子上读取属性似乎很奇怪:我希望它只是使用表单值来设置它们。

有谁能告诉我如何避免这种情况?

1 个答案:

答案 0 :(得分:0)

试试这样:

[HttpPost]
public ActionResult Create(MyView viewModel)
{
   ModelState.Remove("MyReadOnlyProperty");
}

希望有所帮助


修改

[Bindable(false)]
public int MyReadOnlyProperty
     {
         get 
         {
             int result;
             //do stuff 
             return result;
         }
     }