我在this question中提出了我认为更好的ASP.NET MVC视图语法。由于这个问题已经得到解答,我认为我的回答几乎没有反馈,所以我在这里将其作为自己的问题发布。
答案 0 :(得分:2)
您正在使用标记来表示代码。我的意见是:需要代码,只需使用代码,这总是更灵活。如果需要标记,请使用标记。 This article正好解释了我的观点。 但有时代码和标记之间的界限很模糊。
答案 1 :(得分:1)
我真的希望人们不再将XML视为一种编程语言。
答案 2 :(得分:1)
也许您应该使用this“MVC语法”来代替,称为HAML。
%h2= Model.CategoryName
%ul
- foreach (var product in Model.Products)
%li
= product.ProductName
.editlink
= Html.ActionLink("Edit", new { Action="Edit", ID=product.ProductID })
= Html.ActionLink("Add New Product", new { Action="New" })
替换
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true"
CodeBehind="List.aspx" Inherits="MvcApplication5.Views.Products.List" Title="Products" %>
<asp:Content ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
<h2><%= ViewData.Model.CategoryName %></h2>
<ul>
<% foreach (var product in ViewData.Model.Products) { %>
<li>
<%= product.ProductName %>
<div class="editlink">
(<%= Html.ActionLink("Edit", new { Action="Edit", ID=product.ProductID })%>)
</div>
</li>
<% } %>
</ul>
<%= Html.ActionLink("Add New Product", new { Action="New" }) %>
</asp:Content>
答案 3 :(得分:0)
你走在正确的轨道上,但我觉得你走得太远了。余额是将代码与流动的html混合,而不是使其复杂化,也不会创建标签汤。我发现的最佳视图引擎是Spark。
看看它,你会发现它以更微妙和可读的方式解决了你提出的建议。
答案 4 :(得分:0)
另外看一下JSP:他们必须引入一个“表达式语言”才能获得jsp标记中的一些代码功能。结果真的很尴尬恕我直言。它甚至需要一个显式映射(当然是XML)来从这种表达式语言中访问一个简单的函数。
请参阅this。
答案 5 :(得分:-2)
除了maucsch和matt的要点之外,这不也意味着服务器必须加载到内存并解析整个页面寻找“mvc:”?并不是不使用网络表单的原因之一吗?