将自定义模型绑定器的范围限制为特定控制器操作方法或其整个控制器会很方便。 汉塞尔曼 写了一句话,暗示自定义模型活页夹注册的替代位置,但似乎从未完成这个想法:

你可以 任何一个 通过在 Global.asax 中注册此自定义模型绑定器来负责所有日期时间

是否可以在控制器系统的较小范围内进行这些注册?如果是这样,是否有任何理由避免在 Global.asax MvcApplication 之外这样做(例如,性能原因)?

有帮助吗?

解决方案

当我关闭为这个问题打开的选项卡时,我在放弃之前没有到达过,我发现 有答案的人. 。您可以分配一个 ModelBinderAttribute 到您的视图模型:

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

虽然它并不完全是我想要的,但它比为控制器或控制器方法注册它更具体。

更新

感谢李维的评论指出了一个更好的解决方案。如果您直接在 MVC 操作方法中使用自定义模型绑定器使用对象,则可以简单地使用 ModelBinder 财产。

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top