Asp.net mvc &引用;如果;是否认为ASP.NET MVC视图(.aspx)文件有害?

Asp.net mvc &引用;如果;是否认为ASP.NET MVC视图(.aspx)文件有害?,asp.net-mvc,architecture,coding-style,Asp.net Mvc,Architecture,Coding Style,我记得看到一个博客(或其他东西)说你不应该在ASP.NET MVC的.aspx文件中使用,但我不记得它说的替代方法是什么。有人能记得看到这个并指给我看吗?我觉得这很好。它允许视图控制其显示。我怀疑这是为了避免使用意大利面代码,而不是限制“如果”的使用,这里有一个指向Rob Connery博客的链接,关于这一点,他确实提到了使用助手而不是Ifs,所以这可能是你看到的我不确定这是否是你看到的,但是有一个博客提到了这一点。参见第11项。我想你指的是a,他提到了他使用的规则: 如果有If,则创建一个助手

我记得看到一个博客(或其他东西)说你不应该在ASP.NET MVC的.aspx文件中使用,但我不记得它说的替代方法是什么。有人能记得看到这个并指给我看吗?

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

我怀疑这是为了避免使用意大利面代码,而不是限制“如果”的使用,这里有一个指向Rob Connery博客的链接,关于这一点,他确实提到了使用助手而不是Ifs,所以这可能是你看到的

我不确定这是否是你看到的,但是有一个博客提到了这一点。参见第11项。

我想你指的是a,他提到了他使用的规则:

如果有
If
,则创建一个助手


请回答你的问题,如果你发现自己需要使用<代码>如果在你的视图中,你应该考虑添加一个帮助扩展方法来呈现你的视图的一部分。

< P>这是你提到的问题吗? 绑定表达式不能在语句块中使用,正如 语句不能在绑定表达式块中使用

--布鲁斯(sqlwork.com)

“杰森”在留言中写道 新闻:23C11F83-A2AA-406D-BDEC-

我的aspx页面中的以下if语句有什么问题

“T”那么%> 我得到的错误是:BC30201:应为表达式


布鲁斯·巴克(Bruce Barker)

它的基本意思是,视图中不应该有巨大的if语句,控制器和视图模型应该能够处理逻辑。例如:

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

所有产品
应该是:

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

因为我认为最好的方法是尝试在控制器中处理if条件,并为所需结果传递特定视图,或在要渲染的变量中传递视图名称

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;
    }
}

嗯,Martin的答案也是来自最佳实践。

是的,这就是我记得的答案!其他答案中的链接也很好,谢谢!
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;
    }
}