什么是asp.net mvc中“literal”标签的等价物

时间:2009-08-08 14:28:30

标签: asp.net asp.net-mvc

我正在将网站从asp.net迁移到asp.net mvc

在asp.net网站上有很多地方都有“文字”标签,服务器会生成一堆html并粘贴在文字标签中。

在asp.net mvc中等同于doign是什么意思。我应该把它推到ViewData吗?

3 个答案:

答案 0 :(得分:11)

相当于不会使原始开发人员做出同样糟糕的设计选择。

但是,既然我们生活在现实世界中,你就会将他们的字符串 - 包含-html - 推送到特定页面的表示模型中,然后将其写入响应流。

在你的模特中:

public class MyPageModel
{
  public string HolyCrapItsHtml {get;set;}
}

在您的控制器中:

public ActionResult MyPage()
{
  return View(new MyPageModel
         {HolyCrapItsHtml = OldCode.GetHtmlICantBelieveIt()});
}

在您的页面中:

<div>
  In the olden days, we'd concatenate our webpages together from strings like:
  <%= Model.HolyCrapItsHtml %>
</div>

答案 1 :(得分:3)

我遇到了同样的问题。不要打扰MyPageModel,只需坚持使用ViewData,但使用equals而不是冒号。

<%= ViewData("SomeVarName") %>

答案 2 :(得分:1)

如果您使用的是Razor,如果不使用强类型助手,则会执行以下操作

@Model.YourVarName

如果您正在使用强类型视图模型,则可以使用ValueFor()帮助程序

@Html.ValueFor(m => m.YourVarName)

如果您只有几个文字,可以将它们放在ViewData中,但是如果您遵循真正的MVC模型,则应该为具有相应属性的视图创建模型。考虑到您从现有的ASP.NET页面移植,为每个新视图/页面设置新模型可能会带来很多开销,在这种情况下将其粘贴在ViewData中。