Частичное представление ASP.NET MVC с другой моделью - PullRequest
0 голосов
/ 22 сентября 2010

В моем представлении указателя у меня есть обычные ссылки Изменить, Детали и Удалить.Я сделал для них иконки, и так как я использую их повсюду, я поместил их в частичное представление.

Теперь у меня нет ощущения, что я делаю это лучше всего здесь.Поэтому мой вопрос: как его оптимизировать или что должно отличаться для лучшей практики.

Частичное представление:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MVC2_NASTEST.Models.ButtonDetail>" %>
<%if (Model.edit) { %>
<a href='<%= Url.Action("Edit", Model.RouteValues) %>'>
    <img src="<%= Url.Content("~/img/pencil.png") %>" alt="Edit" width="16" /></a>
<%} if (Model.details) { %>
<a href='<%= Url.Action("Details",Model.RouteValues) %>'>
    <img src="<%= Url.Content("~/img/application_view_detail.png") %>" alt="Details" width="16" /></a>
<%} if (Model.delete) { %>
<a class="delbtn" href='<%= Url.Action("Delete",Model.RouteValues) %>'>
    <img src="<%= Url.Content("~/img/cancel.png") %>" alt="Delete" width="16" /></a>
<%} %>

Модель представления:

using System;
namespace MVC2_NASTEST.Models {

    public partial class ButtonDetail {
        public object RouteValues { get; set; }
        public bool edit { get; set; }
        public bool details { get; set; }
        public bool delete { get; set; }
    }
}

могут или должны ли модели представления находиться в пространстве имен Models?или поместить их в другое пространство имен?Какова лучшая практика здесь?

Представление индекса:

    <% foreach (var item in Model) { %>
    <tr>
        <td>
            <% Html.RenderPartial("buttons", new MVC2_NASTEST.Models.ButtonDetail() { RouteValues = new { id = item.hlpb_ID, test = item.hlpb_Ontvanger }, edit = true, details = true, delete = true }); %>
        </td>
        <td>
            <%: item.hlpb_Titel %>
        </td>
        <td>
            <%: item.hlpb_Schooljaar %>
        </td>
        <td>
           ...
        </td>
    </tr>
    <% } %>

Особенно часть в представлении индекса не выглядит лучшей практикой в ​​моих глазах.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Я думаю, что частичное не поможет вам здесь.

<a href='<%= Url.Action("Edit") %>'>
    <img src="<%= Url.Content("~/img/pencil.png") %>" alt="Edit" width="16" /></a>

Не хуже ли

<% Html.RenderPartial("buttonEdit"); %>

Даже если вы обнаружите, что все кнопки должны иметь одинаковый стиль, я бы просто использовал здесь css.

В качестве примечания не используйте get для действия удаления. Поисковый сканер может удалить все ваши записи при сканировании вашего сайта. Даже если это внутренний сайт, это не очень хорошая идея. Используйте пост.

2 голосов
/ 22 сентября 2010

могут или должны модели представления находиться в пространстве имен Models?

Чтобы отделить их от моделей, вы можете поместить их в пространство имен ViewModels. Что касается представления «Индекс», вы можете использовать Редактор / Шаблоны отображения .

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