问题背景:
我有一个两页的MVC 4网络应用程序。第一页的视图当前将其数据手动输入View中作为其静态,即没有任何内容从其关联的Controller方法传递给View,如下所示:
索引控制器方法:
Public ActionResult Index()
{
return View();
}
Index.cshtml查看:
<div class="titleHeader">Welcome To This Test Example</div>
最佳做法:
以上示例是否可以使用,或者我应该在Index控制器上生成ViewModel对象,填充静态数据然后将其返回到View?如图所示:
使用ViewModel的索引控制器索引方法:
Public ActionResult Index()
{
HomePageVM homepageVM = new HomePageVM
{
WelcomeMessage = "Welcome To This Test Example";
};
return View(homepageVM);
}
Index.cshtml现在绑定到HomePageVM ViewModel:
@model TestPage.Models.HomePageVM
<div class="titleHeader">@Model.WelcomeMessage</div>
答案 0 :(得分:4)
我认为(意见),最好将Resource
文件用于静态数据。
使用这些资源文件,您将能够轻松移植到多语言网站。
基本上,您需要创建resx
个文件,将条目设为公开。
在您的cshtml中,您可以通过以下方式访问它:
<div class="titleHeader">@Resources.WelcomeMessage</div>
根据UIThread的文化信息,它可以选择合适的语言。
你可以在这里找到一个教程: http://www.codeproject.com/Articles/778040/Beginners-Tutorial-on-Globalization-and-Localizati
至于你的选择:
1)实际上没有必要为静态数据创建一个ViewModel,除非你期望它在未来是动态的(尽管现在为了将来的需求而开发是个坏习惯)。
2)cshtml中的硬编码字符串可能,但不适合多语言。我想提一点好处:非开发人员更容易改变html。
答案 1 :(得分:3)
基于不 gold plating您的代码的原则。
您不需要视图模型(现在),所以不要添加它。如果您以后想要一个视图模型,那么添加一个视图模型很简单。您的目标应该是创建最简单的解决方案。对我而言,这意味着视图模型(或任何其他不是纯HTML的解决方案)只会增加不必要的复杂性。
斯特凡对资源的回答似乎再次给我镀金。它基于:
将能够轻松移植到多语言网站。
您的网站是多语言吗?有可能吗?如果否,则为镀金。
答案 2 :(得分:1)
我不是一个真正的代码大师但是: 当您只想显示一行静态文本时,为什么要使用viewbag甚至viewmodel?当你想加2 + 2时,你通常不会使用计算器吗?
<div>
对我来说似乎很好