用于显示静态生成数据的MVC最佳实践

时间:2015-06-12 08:45:25

标签: c# asp.net-mvc asp.net-mvc-4 razor

问题背景:

我有一个两页的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>

3 个答案:

答案 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>对我来说似乎很好