0

Я продолжаю отказываться от процедурного программирования при отображении данных в группах, и я уверен, что должен быть лучший способ. Твои мысли?MVC Razor Отображение данных в группах

//Example: Sales by Region 

@{ 
    string _Region = ""; 
    bool _FirstRecordFlag = false; 
    } 


    @foreach(DataRow Row in dataset.Tables["MonthlySales"].Rows) 
    { 
     if(_Region != Row["Region"].ToString()) 
     { 
      if(_FirstRecordFlag) 
      { 
       @:</fieldset> 
       _FirstRecordFlag = true; 
      } 
      @:<fieldset> 
      @: <legend>@Row["Region"]</legend> 
      _Region = Row["Region"].ToString()) 
     } 
      <div> 
       Display Sales data here... 
      </div> 
    } 
} 

ответ

2

Я продолжаю падать обратно процедурное программирование при отображении данных в группах, и я уверен, что должно быть лучшим способом

Конечно, что есть лучший путь. Поскольку ваш вопрос помечен mvc, вы должны использовать модель представления и выполнить все подобные группировки в контроллере, чтобы заполнить вашу модель представления, которая будет передана в представление. Представление Razor должно быть как можно глубже - оно будет отображать только информацию из модели представления. Работа с DataSet и DataRows в представлении Razor - это совершенно неверный способ решения этой проблемы. Ваши взгляды будут похожи на какой-то ужасный код спагетти.

Так что подумайте о том, как вы хотите представить информацию о представлении. Основываясь на этом мышлении, вы сможете придумать модель представления, которая будет отражать эту структуру. Тогда все, что вам нужно сделать в действии контроллера, - это сопоставить модели вашего домена (DataSets в вашем случае) с соответствующей моделью представления, которая будет передана в представление.

И если это не приложение ASP.NET MVC, но сайт WebMatrix, где у вас есть только часть View, вы все равно должны определить модель представления и ваша кода-за части страницы бритвы отображают область модели к модели представления, которая затем будет обрабатываться частью представления шаблона Razor.

+0

Мне очень нравится ваш ответ. Просто спросить. Что относительно конструктора ViewModel? так что вы можете держать контроллер тоньше? – GibboK

+0

@GibboK, да, лично я использую Automapper для этого. –