Как правильно повторно использовать редактировать / новые представления в Asp.NET MVC - PullRequest
8 голосов
/ 20 ноября 2008

Я пытаюсь избежать такого кода при повторном использовании того же ViewUserControl в ASP.NET MVC. Есть предложения?

<% if (ViewContext.ViewData["editMode"].ToString() == "edit"){ %>
    <%= Html.SubmitButton("submit", "Update Brand")%><span class="or">Or</span><a href="#" class="cancel">Cancel</a>
<% } else { %>
    <%= Html.SubmitButton("submit", "Create New Brand")%><span class="or">Or</span><a href="#" class="cancel">Cancel</a>
<%} %>

И ...

<% if (ViewContext.ViewData["editMode"].ToString() == "edit"){ %>
    <h1 class="edit">Edit Brand Details</h1>
<% } else { %>
    <h1 class="create">Create A New Brand</h1>
<%} %>

Ответы [ 3 ]

12 голосов
/ 20 ноября 2008

Я всегда создавал отдельные представления для New и Edit, иначе кажется, что логика моего приложения начинает проникать в мое представление. Точно так же у меня есть разные действия контроллера для создания и обновления. Возможно, лучший способ достичь этого - взять биты, которые разделяют два представления, переместить их в пользовательский элемент управления и выполнить RenderPartial. Таким образом, вы можете иметь чистые виды в одном режиме, но записывать общие части можно только один раз.

9 голосов
/ 20 апреля 2009

Создание одного (или нескольких) частичных представлений для вашей сущности (например, с использованием контактной сущности) - IdChange.ascx (который показывает Id и информацию об изменении) - PersonalInfo.ascx - Address.ascx

IdChange.ascx понадобится только в представлениях редактирования

Создайте два отдельных вида для редактирования и создания, а затем используйте RenderPartial, чтобы перенести данные модели в вид. Create.aspx

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm())
   { %>
<fieldset>
    <legend>Create a new contact</legend>
    <div id="pagecontent">
        <div id="left">
        </div>
        <div id="center">
            <% Html.RenderPartial("PersonalInfo", Model); %>
        </div>
    </div>

    <p>
        <input type="submit" value="Create" />

Edit.aspx

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm())
   { %>
<fieldset>
    <legend>Edit existing contact</legend>
    <div id="pagecontent">
        <div id="left">
            <% Html.RenderPartial("IdChange", Model); %>
        </div>
        <div id="center">
            <% Html.RenderPartial("PersonalInfo", Model); %>
        </div>
    </div>

    <p>
        <input type="submit" value="Edit" />
2 голосов
/ 31 декабря 2008
<% string submitLabel = (ViewData["editMode"].ToString() == "edit") ? "Update Brand" : "Create New Brand" %>
<%= Html.SubmitButton("submit", submitLabel)%><span class="or">Or</span><a href="#" class="cancel">Cancel</a>

Если у вас есть несколько таких ярлыков, вы можете определить их в верхней части страницы.

<% 
  string submitLabel = (ViewData["editMode"].ToString() == "edit") ? "Update Brand" : "Create New Brand";
  string h1Class = (ViewData["editMode"].ToString() == "edit") ? "edit" : "create";
  string h1Label = (ViewData["editMode"].ToString() == "edit") ? "Edit Brand Details" : "Create a New Brand";
%>


<h1 class="<%= h1Class %>"><%= h1Label %></h1>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...