Помогите мне понять MVC.NET - PullRequest
       0

Помогите мне понять MVC.NET

1 голос
/ 02 сентября 2010

Я привык работать с ASP.NET FORMS и с трудом разбираюсь в MVC.NET.

Если я в WebForms создам страницу профиля для пользователя, она будет состоять из страницы aspx с несколькими пользовательскими элементами управления, добавленными на страницу, которые все делают по-другому. Один элемент управления может отображать последние сообщения пользователя, другой - друзей, подключенных к нему и т. Д.

Но как это сделать в MVC.NET?

Должен ли я создать несколько представлений для каждого пользовательского элемента управления или я должен создать одну огромную модель, которая содержит все данные, которые мне нужны на странице, и затем передать их представлению?

Ответы [ 4 ]

1 голос
/ 02 сентября 2010

Для меня, если частичное представление (.ascx или usercontrol в формах asp.net) содержит много динамического содержимого, я сделаю это строго типизированным представлением.Это означает, что у него есть своя модель.В зависимости от его удобства использования.Но я настоятельно рекомендую сделать каждое представление соответствующей моделью.

Например, в этой ситуации у вас есть частичное представление с моделью Address

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

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Address>" %>

Address Name: <%=Model.AddressName %>
Address Location: <%=Model.AddressLocation %>

Модель

public class Address
{
     public string AddressName {get;set;}
     public string AddressLocation {get;set;}
}

И я хочу использовать этот частичный вид в зависимости от используемой страницы.Может быть пользователь логина или пользователь друзей.Я бы просто назвал соответствующее действие в контроллере.

Скажем, я поместил его в CommonController

public class CommonController : Controller
{
     ModelRepository modelRepository = new ModelRepository();

     public PartialViewResult AddressPartialView(int id)
     {
          var address = modelRepository.GetAddress(id);
          return View("AddressPartialView", address);
     }
}

В этом случае я могу вызвать это частичное представление в любой части.любой страницы

<%= Html.Action("AddressPartialView", "Common", new { id = Model.AddressId })%>

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

1 голос
/ 02 сентября 2010

Это другой способ мышления, но более ориентированный на разделение интересов, и как только вы начнете с ним работать, вам больше никогда не захочется возвращаться к веб-формам asp.net :) (Просто мое мнение).

Давайте возьмем страницу вашего примера 1 Webform (aspx), которая будет содержать набор пользовательских элементов управления, и у вас либо есть логика, расположенная в коде позади, будь то пользовательские элементы управления или где-то еще..net mvc у вас есть следующее.Модель, которую вы можете рассматривать как уровень доступа к данным.В моих проектах я пытаюсь создать модель, которую я буду использовать для взаимодействия с представлением.

a Контроллер, который делегирует, какое представление должно быть представлено.

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

Давайте возьмем в качестве примера переполнение стека.Вопросы могут быть View и ваши теги и рекламные объявления на стороне, могут быть частичными представлениями.Модель может иметь список и несколько методов CRUD (создание, чтение, обновление, удаление).

Вот и все.Вы можете прочитать еще немного и получить лучшее понимание от http://www.asp.net/mvc

0 голосов
/ 02 сентября 2010

Выбор шаблона презентации для новой или корпоративной веб-разработки на платформе Microsoft - непростая задача, на мой взгляд, их всего три; View Model, Model-View-Presenter (MVP) или ASP.NET MVC (производная Model2).

Таким образом, статья поможет вам понять, что выбрать при ASP.NET MVC Patterns

0 голосов
/ 02 сентября 2010

Создание пользовательских элементов управления все еще возможно в ASP.NET MVC (их также называют частичными представлениями).Отличие от подхода WebForm заключается в том, что эти пользовательские элементы управления получают свои данные из родительского представления.Например:

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

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"   
Inherits="System.Web.Mvc.ViewPage<MyViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
    ...
    <% Html.RenderPartial("MyUserControl", Model.UserControlViewModel); %>
    ...
</asp:Content>

Пользовательский элемент управления (этот должен называться MyUserControl.ascx):

<%@ Control Language="C#" 
Inherits="System.Web.Mvc.ViewUserControl<MyUserControlViewModel>" %>
...

MyViewModel содержит все данные для обоихпредставление и его пользовательский контроль:

public class MyViewModel
{
    public MyUserControlViewModel UserControlViewModel {get; set;}
}

Я нашел учебник в блоге Скотта Гу хорошей отправной точкой.

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