2010-01-11 69 views

回答

2

我不确定这是你看到的,但here是一个提到它的博客。见项目#11。

+0

是的,那是我记得的那个!其他答案中的链接也很好,谢谢! – JoelFan 2010-01-11 15:19:10

0

我觉得这很好。它允许视图控制其表示。

0

我怀疑这一点是试图避免意大利面代码,而不是限制使用“if”,这里是一个关于这个Rob Conery博客的链接,他实际上提到使用助手而不是Ifs,所以这个可能是你看到的ASP.NET MVC: Avoiding Tag Soup

9

我想你指的是一个post by Rob Conery,在那里他提到他使用的规则:

如果有一个if,造一个配偶帮助

因此,要回答你的问题,这个想法是,如果你发现自己需要在视图中使用if,你应该考虑添加一个辅助扩展方法来渲染你视图的那部分。

0

这是你指的问题吗?

结合表达式不能在语句块被用于<%%>,正如 语句不能在结合表达块<%#被用于%>

- 布鲁斯(sqlwork.com)

“杰森” <>在消息 新闻中写道:23C11F83-A2AA-406D-BDEC -...

什么是错在我的aspx页面下面的if语句?

“T”Then%>

我收到错误消息:BC30201:预期的表达式。

布鲁斯·巴克

10

基本上它的意思是,你不应该有巨大的,如果你的观点的陈述,你的控制器和的ViewModels应该能够处理的逻辑。例如:

<h2 class="title"> 
    <% if (ViewData["category"] == null { %> 
     All Products 
    <% } else { % > 
     <%= ViewData["category"] %> 
    <% } %> 
</h2> 

应该是:

<h2 class="title> 
    <%= Model.Title %> 
</h2> 

如果你的控制器和的ViewModels不能处理的逻辑,你应该写HTML辅助更复杂的逻辑(从而使其可重复使用的,更具可读性)。

<h2 class="title> 
    <%= Html.GetPageTitle(Model.Category) %> 
</h2> 
2

,因为我认为这样做的最好的办法是设法处理您如果条件控制,并通过所需结果的特定视图或变量来渲染通道视图名称。

public class HomeController :Controller 
{ 
    public ActionResult Category(string? category) 
    { 
     View viewToReturn; 
     if (category == null) 
      viewToReturn = View("CategoryList", repo.GetAllCategory); /// it is a View 
     else 
      viewToReturn = View("Category", repo.GetCategory(category)); /// it is a View 

     return viewToReturn; 
    } 
} 

那么,马丁的答案也来自最佳实践。