1
我一直在寻找自定义模型绑定器作为一种全局截取和修改我的视图模型上的特定字符串属性的方法。定制模型活页夹可以在两个方向上工作吗?
我可以覆盖SetProperty并操作正在张贴的值,但是反过来呢?
例如,我可能想修剪()所有从我的模型中出来的字符串,这是可能的模型粘合剂或我错过了什么?我已经看过重写GetPropertyValue,但是当视图加载时这不会触发。
任何指针,将不胜感激。
我一直在寻找自定义模型绑定器作为一种全局截取和修改我的视图模型上的特定字符串属性的方法。定制模型活页夹可以在两个方向上工作吗?
我可以覆盖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; }
}
}
...但你不能用模型绑定绑定模型从控制器到视图去。
谢谢,试图实现ActionFilterAttribute,但我如何从ActionExecutingContext filterContext获得对模型的访问? – bigtv 2012-03-19 12:58:28
查看更新的答案。您的模型将被输入为'object',所以您需要反射API修剪其中的字符串属性。 – danludwig 2012-03-19 13:05:45