asp.net-mvc-3 - 我可以在 MVC3 中扩展 ModelStateDictionary 类吗

标签 asp.net-mvc-3

在 ModelStateDictionary 类中只有 AddModelError 和 Add 函数,我想扩展类,添加像 AddModeSuccess,AddModelWarning 这样的方法。
我查看了 MVC3 源代码,发现需要添加很多东西。我不想修改 MVC3 代码,我只想添加一个扩展名。我怎么办?

    public void Add(KeyValuePair<string, ModelState> item) {
        ((IDictionary<string, ModelState>)_innerDictionary).Add(item);
    }

    public void Add(string key, ModelState value) {
        _innerDictionary.Add(key, value);
    }

    public void AddModelError(string key, Exception exception) {
        GetModelStateForKey(key).Errors.Add(exception);
    }

    public void AddModelError(string key, string errorMessage) {
        GetModelStateForKey(key).Errors.Add(errorMessage);
    }

最佳答案

您可以将它们添加为 extension methodsModelStateDictionary类(class):

public static class ModelStateExtensions
{
    public static void AddModelSuccess(this ModelStateDictionary modelState, ... some parameters)
    {
        ...
    }

    public static void AddModelWarning(this ModelStateDictionary modelState, ... some parameters)
    {
        ...
    }
}

关于asp.net-mvc-3 - 我可以在 MVC3 中扩展 ModelStateDictionary 类吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7566701/

相关文章:

asp.net - Entity Framework -Where 子句

c# - MVC 3 逆向工程数据库然后切换到代码优先

asp.net-mvc-3 - 我如何在 mvc3 razor 的复选框中动态绑定(bind)数据

asp.net-mvc - 重定向(url)不起作用

asp.net-mvc - ASP.NET MVC 3 区分大小写的 URL

c# - 如何在 C# 中使用列表创建循环

c# - 无法在客户端验证电子邮件

c# - 为什么 Razor 不喜欢这个?

c# - HTML 解码和编码

asp.net-mvc-3 - MVC 3 不显眼的验证 - 有条件地禁用/启用验证