你会使用这个ASP.NET MVC视图语法吗?

时间:2008-12-24 13:48:17

标签: asp.net-mvc

我在this question中提出了我认为更好的ASP.NET MVC视图语法。由于这个问题已经得到解答,我认为我的回答几乎没有反馈,所以我在这里将其作为自己的问题发布。

6 个答案:

答案 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:”?并不是不使用网络表单的原因之一吗?