从自定义帮助器方法访问System.Web.Mvc下的MvcResources

时间:2017-05-23 23:38:08

标签: asp.net-mvc html-helper

我正在使用MVC 5.0开发一个自定义的Html辅助扩展方法,在浏览了内置辅助方法的源代码之后:InputHelper(),我想在我的帮助方法中使用它的一部分: / p>

if (String.IsNullOrEmpty(fullName))
{
    throw new ArgumentException(MvcResources.Common_NullOrEmpty, "name");
}

但是,即使使用了名称空间System.Web.Mvc,我仍然会收到错误消息:名称' MvcResources'在目前的情况下找不到。

根据其源代码,MvcResources在.resx文件中定义:https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/Properties/MvcResources.resx

我确信上面分享的源代码是MVC 5.x。

那么,任何人都可以帮忙吗?感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用System.Resources.ResourceManager获取资源。

所以您的代码如下所示 -

if (String.IsNullOrEmpty(fullName))
{    
    throw new ArgumentException(System.Resources.ResourceManager(typeof(MyProject.MvcResources)).GetString("name"),"name");//replace `MyProject.MvcResources` by full name (with namspace) of your Resource class
}

您可以创建和使用自定义HtmlHelper,如下所示。

示例:

助手:

public static class HelperClass{
 public static string InputHelper<T>(this HtmlHelper html, object key) {
    return new System.Resources.ResourceManager(typeof(T)).GetString(key.ToString());
 }
}

使用:

@Html.InputHelper<MyProject.Resouce.MyResouce>("name")

希望它对你有帮助。

答案 1 :(得分:0)

是的帖子很旧,但是今天这是在搜索中出现的,当时我正在寻找System.Web.Mvc.Properties.MvcResources的实际resx文件(以便我可以在其中复制值)

您无法直接访问System.Web.Mvc.Properties.MvcResources的原因是它被声明为内部。