Нужен совет о том, как структурировать страницу бритвы asp mvc - PullRequest
1 голос
/ 02 сентября 2011

enter image description here У меня есть одна страница, которая будет содержать много данных. Контур страницы находится на изображении. Для вывода я использовал «бритвенный» двигатель.

  • Теперь мне интересно, получу ли я что-нибудь, если я проведу рефакторинг своего кода, чтобы каждый раздел какие данные поступают из базы данных, будет частичное представление?
  • На этой странице мне нужно около 20 объектов-значений для отображения всех необходимых данных.

Я создал один класс ViewModel, который содержит все нужные мне данные, и установил, что класс viewModel как модель страницы бритвы. Это правильный путь, как я должен это сделать или есть какой-нибудь умный путь?

public class MyViewModelClass{
    public ValueObjectx x;
    public ValueObjecty y;
    public ValueObjectz z;

    public List<ValueObjectT> tList;
    public List<ValueObjectG> gList;
    public List<ValueObjectS> sList;
}

Ответы [ 2 ]

4 голосов
/ 02 сентября 2011

В подобном сценарии я обычно представляю каждый раздел как частичное представление. Каждый раздел отвечает за свой собственный макет и ViewModel. Это предотвращает тенденцию иметь суперпредставление, которое должно знать слишком много вещей для рендеринга.

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

Я бы не использовал одну ViewModel для всех данных. Я бы использовал ViewModel только для данных, которые могут быть фактически отправлены обратно на сервер. Для всех остальных данных, таких как списки, я бы поставил их на ViewBag. Как:

public ViewResult SomeAction()
{
    var model = GetYourModelData();
    ViewBag.TList = GetTList();
    ViewBag.GList = GetGList();
    ViewBag.SList = SList();
    return View(model);
}

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

Обратите внимание, что это не «ответ на этот вопрос - это то, как вы должны это делать», это скорее описание того, что работает для меня. Но, на мой взгляд, модель представления - это одно, а фактические данные, такие как данные в раскрывающихся списках и т. Д., - это другое дело, и их следует поместить в свойство ViewData, но ViewBag - это просто динамическая оболочка вокруг свойства ViewData. Затем вы можете использовать свойства ViewBag в качестве входных данных для ваших частичных представлений, которые должны составлять каждый из ваших разделов.

...