我一直在研究自定义模型绑定器,作为全局拦截和修改视图模型上特定字符串属性的方法。
我可以覆盖SetProperty并操纵正在发布的值但是反过来呢?
例如,我可能想要Trim()从我的模型中出来的所有字符串,这可能是模型绑定器还是我错过了什么?我已经看过覆盖GetPropertyValue,但是当视图加载时,这似乎不会触发。
任何指针都会受到赞赏。
答案 0 :(得分:1)
不,模型粘合剂只能在一个方向上工作。
您可以创建自己的ActionResult实例,例如通过扩展ViewResult或PartialViewResult。
或者您可以实现ActionFilterAttribute来修剪字符串。
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var model = filterContext.Controller.ViewData.Model;
...
}
或者你可以做暴力
public class MyModel
{
private string _myProp
public string MyProp
{
set { _myProp = value.Trim(); }
get { return _myProp; }
}
}
...但是您不能使用模型绑定器来绑定从控制器到视图的模型。