Asp.net mvc 3 如何根据不同于UI区域性的标准实现自定义资源提供程序?

Asp.net mvc 3 如何根据不同于UI区域性的标准实现自定义资源提供程序?,asp.net-mvc-3,resources,Asp.net Mvc 3,Resources,我正在开发.NET4.0MVC3 web应用程序。该应用程序全部为英语,允许用户填写不同地区的信息。为简单起见,假设我们有两个地区:美国和西欧 现在在视图中,我展示了一个字符串,比如说项目开始,但是如果用户在美国地区工作,我希望它能够阅读项目开始 当我想到这个功能时,我马上想到了不同区域的资源文件,但是独立于UI文化 有人知道如何达到我的目的吗 如果将来我能将其改为extendedDisplayAttributeStringDisplayName,int regionId置于我的ViewMode

我正在开发.NET4.0MVC3 web应用程序。该应用程序全部为英语,允许用户填写不同地区的信息。为简单起见,假设我们有两个地区:美国和西欧

现在在视图中,我展示了一个字符串,比如说项目开始,但是如果用户在美国地区工作,我希望它能够阅读项目开始

当我想到这个功能时,我马上想到了不同区域的资源文件,但是独立于UI文化

有人知道如何达到我的目的吗

如果将来我能将其改为extendedDisplayAttributeStringDisplayName,int regionId置于我的ViewModels属性之上,那也太好了

编辑

我已经处于可以访问助手中的区域信息的阶段,该助手应该返回该区域的字符串。现在我对资源文件有一个问题。我想使用故障转移机制创建多个资源文件。我原以为会有现成的东西,但ResourceManager不能用于读取resx文件

是否有任何技术允许我在不使用非sense resgen.exe的情况下读取特定资源文件中的值


我也不想使用System.Resources.ResXResourceReader,因为它属于System.Windows.Forms.dll,这是一个Web应用。

以防万一将来有人想这样做。这篇文章非常有用:

我使用VB的代码是:

<Extension()>
Public Function Resource(Of TModel)(ByVal htmlHelper As HtmlHelper(Of TModel), resourceKey As String) As MvcHtmlString
    Dim regionLocator As IRegionLocator = DependencyResolver.Current.GetService(GetType(IRegionLocator))

    Dim resources = New List(Of String)
    If Not String.IsNullOrEmpty(regionLocator.RegionName) Then
        resources.Add(String.Format("Website.Resources.{0}", regionLocator.RegionName))
    End If
    resources.Add("Website.Resources")

    Dim value = String.Empty
    For Each r In resources
        Dim rManager = New System.Resources.ResourceManager(r, System.Reflection.Assembly.GetExecutingAssembly())
        rManager.IgnoreCase = True

        Try
            value = rManager.GetString(resourceKey)
            If Not String.IsNullOrEmpty(value) Then
                Exit For
            End If
        Catch

        End Try
    Next

    Return New MvcHtmlString(value)
End Function

那么,如果不依赖于用户界面文化,你怎么知道是使用美国还是西欧呢。在站点上选择区域性,或者它是say project的一个属性?区域信息将基于URL在控制器中可用。请记住,我不想将其作为ViewModel的一部分。