Вы бы использовали этот синтаксис представления ASP.NET MVC?
-
23-08-2019 - |
Вопрос
Я предложил, по моему мнению, лучший синтаксис для представлений ASP.NET MVC в этот вопрос.Поскольку на этот вопрос был дан ответ, я думаю, что мой ответ вызовет мало отзывов, поэтому я публикую его здесь как отдельный вопрос.
Решение
Вы на правильном пути, но мне кажется, вы зашли слишком далеко.Баланс заключается в том, чтобы смешивать код с HTML, в котором он проходит, и не усложнять его, а также не создавать суп из тегов.Лучший механизм просмотра, который я нашел, который делает это, - это Искра.
Взгляните на него, и вы обнаружите, что он более тонко и понятно описывает то, что вы предлагаете.
Другие советы
Вы используете разметку для представления кода.Мое мнение это:там, где необходим код, просто используйте код, который всегда более гибок.Там, где необходима разметка, используйте разметку.Эта статья точно объясняет мою точку зрения.Однако иногда грань между кодом и разметкой размыта.
Мне бы очень хотелось, чтобы люди перестали относиться к XML как к языку программирования.
Возможно, вам следует использовать этот Вместо этого «синтаксис 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>
Также взгляните на JSP:им пришлось ввести «язык выражений», чтобы реализовать часть возможностей кода в разметке jsp.Результат, ИМХО, действительно неприятный.Ему даже требуется явное сопоставление (разумеется, в XML) для доступа к простой функции из этого языка выражений.
Видеть этот.
В дополнение к замечаниям Маучша и Мэтта, не будет ли это также означать, что серверу придется загружать в память и анализировать всю страницу в поисках «mvc:»?И разве это не одна из причин не использовать веб-формы?