我有一个视图模型
public class ViewModel
{
public string Text { get; set; }
public string Name { get; set; }
}
提交的表单仅提供Text值。我想在自定义模型绑定器中设置Name属性。
所以我从DefaultModelBinder类派生了我的自定义模型绑定器并覆盖了BindModel方法。
问题是BindModel方法仅针对incomning属性调用。
我的问题是如何在我的cystom模型绑定器中设置Name值?
答案 0 :(得分:0)
如果您没有Name的传入值,那么您没有进行(自定义)模型绑定。相反,您希望在操作执行之前在模型对象中提供一些数据,对吧?如果是这样,请使用ActionFilter,覆盖OnActionExecuting()并将所需数据提供给操作参数。
public class SupplyNameAttribute : FilterAttribute, IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.ActionParameters != null)
{
foreach (KeyValuePair<string, object> parameter in filterContext.ActionParameters)
{
if (parameter.Key == "Name") parameter.Value == "Hey";
}
}
}
}
编辑:
您也可以使用自定义ValueProvider进行默认模型绑定,请参阅
http://mgolchin.net/posts/19/dive-deep-into-mvc-ivalueprovider