我正在将网站从asp.net迁移到asp.net mvc
在asp.net网站上有很多地方都有“文字”标签,服务器会生成一堆html并粘贴在文字标签中。
在asp.net mvc中等同于doign是什么意思。我应该把它推到ViewData吗?
答案 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中。