的第一个想法。
假设您有两个合作伙伴:Foo Logistics和Bar Solutions。为每个人分配一个资源文件:PartnerFoo.resx和PartnerBar.resx。
在你的控制器,存储您要使用到的ViewData作为资源文件:
public ActionResult About()
{
...
ViewData["Resource"] = "MyMVCAppNamespace.Resources.PartnerFoo";
return View();
}
包括命名空间为字符串了。
然后代码在助手中检索与viewdata资源。
助手/ Helper.cs:
namespace MyMVCAppNamespace.MvcHtmlHelpers
{
public static class HtmlHelpersExtensions
{
public static ResourceManager PartnerResource(this HtmlHelper helper)
{
// Get resource filename from viewdata
string res = helper.ViewContext.ViewData["Resource"].ToString();
// Load the resource from assembly
ResourceManager resourceManager = new ResourceManager(res, Assembly.GetExecutingAssembly());
return resourceManager;
}
}
}
现在看来,我们要利用这个帮手来获取我们想要写入字符串:
About.cshtml:
@Html.PartnerResource().GetString("PartnerName")
@Html.PartnerResource().GetString("PartnerCustomerServiceEmail")
它被渲染为:
Foo Logistics [email protected]
或PartnerBar
Bar Solutions [email protected]
我们确定在视图加载之前要使用的资源文件。然后在视图中根据存储在viewdata中的资源动态呈现它。您甚至可以将资源文件名存储到web.config中,如果需要,可以从该处加载字符串。
更酷的是,如果你有本地化的resx文件,说PartnerFoo.fi.resx,然后使用不同的文化(在这种情况下fi-FI),resourcemanager自动查找本地化的版本。
您甚至可以通过存储图像URL和资源文件中的内容来做简单的品牌推广。
真的很简单,但我希望它能让你开始。