我应该直接从View使用Response.Write吗?

时间:2009-11-12 22:15:25

标签: asp.net-mvc views

我一直试图避免在我的MVC视图中直接使用Response.Write(...)。原因是我只需要输入字符串文字而视图引擎知道该怎么做。但是,在某些情况下,我似乎创建了太多的尖括号(< %%>)。那么,您认为这两个代码片段中的哪一个更容易被接受?

<% if (true)
{
  Response.Write(Model.SomeValue);
} %>

或者

<% if (true) { %>
<%= Model.SomeValue %>
<% } %>

3 个答案:

答案 0 :(得分:4)

这就是Html Helpers存在的原因(尽可能避免意大利面条代码):

<%= Html.MySuperHelper(Model.SomeValue) %>

每当你需要在视图中写一个if语句时,你可能会问自己一个问题:编写辅助方法(作为奖励可以进行单元测试)不是更好吗?

答案 1 :(得分:2)

第三种可能性怎么样?

<%= condition ? Html.Encode(Model.SomeValue) : "" %>

虽然在实践中你应该完全保留除了最简单的逻辑之外的所有逻辑。要么在控制器中完成工作,要么将逻辑包装在某种HTML帮助器中。

答案 2 :(得分:0)

或者第四个:

<%= condition ? Html.Encode(Model.SomeValue) : "" %>