自定义模型活页夹可以双向工作吗

本文关键字:工作 模型 自定义 | 更新日期: 2023-09-27 18:28:10

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

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

例如,我可能想修剪()模型中的所有字符串,这可能与模型绑定器有关吗?或者我遗漏了什么?我已经考虑过重写GetPropertyValue,但在加载视图时似乎不会触发它。

任何建议都将不胜感激。

自定义模型活页夹可以双向工作吗

否,模型绑定器只能在一个方向上工作。

您可以创建自己的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; }
    }
}

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