Вы бы использовали этот синтаксис представления ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/391438

  •  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:»?И разве это не одна из причин не использовать веб-формы?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top