我记得看到一个博客(或其他)说你不应该使用<%if ...%>在ASP.NET MVC中的.aspx文件中,但我不记得它所说的替代方案是什么。任何人都能记得看到这一点并指出我吗?
答案 0 :(得分:10)
基本上它意味着你的视图中不应该包含巨大的if语句,你的控制器和ViewModel应该能够处理逻辑。例如:
<h2 class="title">
<% if (ViewData["category"] == null { %>
All Products
<% } else { % >
<%= ViewData["category"] %>
<% } %>
</h2>
应该是:
<h2 class="title>
<%= Model.Title %>
</h2>
如果您的控制器和ViewModel无法处理逻辑,您应该为更复杂的逻辑编写Html Helper(从而使其可重用且更具可读性)。
<h2 class="title>
<%= Html.GetPageTitle(Model.Category) %>
</h2>
答案 1 :(得分:9)
我认为你所指的是post by Rob Conery,他提到了他使用的规则:
如果有
if
,请提供帮助
所以要回答你的问题,我们的想法是,如果你发现自己需要在视图中使用if
,你应该考虑添加一个帮助扩展方法来代替你的View部分。
答案 2 :(得分:2)
我不确定这是不是你所看到的,但是here是一个提到它的博客。见第11项。
答案 3 :(得分:2)
我认为最好的方法是尝试在控制器中处理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;
}
}
嗯,马丁的回答也来自最佳实践。
答案 4 :(得分:0)
我觉得这很好。它允许视图控制其显示。
答案 5 :(得分:0)
我怀疑这一点是试图避免使用意大利面条代码而不是限制使用“if”s,这里是Rob Conery博客关于此的链接,他确实提到使用助手代替Ifs所以这可能是你所看到的ASP.NET MVC: Avoiding Tag Soup
答案 6 :(得分:0)
这是你所指的问题吗?
绑定表达式不能在语句块&lt; %%&gt;中使用,就像 语句不能用于绑定表达式块&lt;%#%&gt;
- 布鲁斯(sqlwork.com)
“Jason”&lt;&gt;在消息中写道 消息:23C11F83-A2AA-406D-BDEC -...
我的aspx页面中的以下if语句有什么问题?
“T”然后%&gt;我收到的错误是:BC30201:预期表达。
布鲁斯巴克