ASP.NET MVC2 СУХОЙ шаблон просмотра? - PullRequest
1 голос
/ 30 октября 2010

Итак, я представляю всю эту логику, полагая, что было бы полезно следовать принципу СУХОЙ.

По сути, это копирует бумажную форму, и в моей модели представления у меня есть пары свойств, названных как XXXCondition и XXXComment, которые вместе образуют InspectionDetail в моей реальной модели.

   <table>
    <% string secname ="";
       foreach (PropertyInfo p in typeof(InspectionFormModel).GetProperties()) {
           object[] sec = p.GetCustomAttributes(typeof(InspectionSection), false);
           object[] name = p.GetCustomAttributes(typeof(DisplayNameAttribute), false);
           string propname = p.Name;

           /* Display a row for all view model properties having InspectionSection Attribute */
           if ( sec.Length > 0) {

               /* New Subheading */
               if (((InspectionSection)sec[0]).Section.ToString() != secname) {
                   secname = ((InspectionSection)sec[0]).Section.ToString();
                   var secdesc = typeof(InspectionDetail.DetailTypes).GetMember(secname)[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                   string ssecdesc = (secdesc.Length == 0) ? secname : ((DescriptionAttribute)secdesc[0]).Description;
                   %> <tr><th><%= ssecdesc %></th><th>Condition</th><th>Remarks</th></tr><%
               }

               /* Use DisplayName attribute for item instead of property name if specified */
               if (name.Length > 0)
               {
                   propname = ((DisplayNameAttribute)name[0]).DisplayName;
               }%>
    <tr>
        <td><label for="<%= p.Name %>"><%= propname %></label></td>
        <td><%= Html.DropDownList(p.Name, (IEnumerable<SelectListItem>)ViewData["ItemConditions"]) %></td>
        <td><%= Html.TextBox(p.Name.Replace("Condition", "Comment"), null, new {Class ="comment"}) %></td>
    </tr>
    <% } } %>
    </table>

Весь этот код в представлении выглядит как определенный анти-шаблон. Будет ли лучшее место, чтобы скрыть это? Или глупо полагаться на то, что свойства порядка определены в модели представления вообще ?

1 Ответ

1 голос
/ 30 октября 2010

Рассматривали ли вы такие вещи, как шаблоны MVC: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html?

Возможно, вам также следует создать собственную модель представления и инициализировать ее в вашем контроллере / методе действия из различных атрибутов и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...