自定义模型粘合剂可以在两个方向上工作吗?

时间:2012-03-19 11:31:48

标签: c# asp.net-mvc asp.net-mvc-3

我一直在研究自定义模型绑定器,作为全局拦截和修改视图模型上特定字符串属性的方法。

我可以覆盖SetProperty并操纵正在发布的值但是反过来呢?

例如,我可能想要Trim()从我的模型中出来的所有字符串,这可能是模型绑定器还是我错过了什么?我已经看过覆盖GetPropertyValue,但是当视图加载时,这似乎不会触发。

任何指针都会受到赞赏。

1 个答案:

答案 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; }
    }
}

...但是您不能使用模型绑定器来绑定从控制器到视图的模型。