1) Пользователь указывает в пользовательском интерфейсе, какие результаты пользователь хочет видеть
2) Контроллер интерпретирует это и сохраняет это для дальнейшего использования
3) Контроллер идет в DAL и получает данные из DAL
4) Затем контроллер каким-то образом изменяет возвращаемый результат в соответствии с # 2
5) Контроллер затем передает измененные данные в пользовательский интерфейс
6) Пользовательский интерфейс отображает данные
Я думаю, что ваше отключение начинается с 4 и может продолжаться до 6.
Дело в том, что существуют буквально тысячи способов сделать это. Вот один из способов сделать это в удивительно C # -подобном псевдокоде.
Во-первых, я бы создал модель представления, содержащую информацию о том, что я хочу отобразить пользователю.
Оригинал Linq to Sql (сокращенно):
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string Tel {get;set;}
}
Моя модель просмотра:
public partial class PeopleView
{
public bool ShowFirstName {get;set;}
public bool ShowLastName {get;set;}
public bool ShowTel {get;set;}
public IEnumerable<Person> People {get;set;}
}
Метод контроллера, который подготавливает модель:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult PersonDetails(bool showFirstName,
bool showLastName, bool showTel)
{
var viewData = new PeopleView()
{
ShowFirstName = showFirstname,
ShowLastName = showLastName,
ShowTel = showTel,
People = Dal.GetPeople()
};
return View(viewData);
}
А вот и вид:
<% foreach(var item in ViewData.Model.People){ %>
<% if(ViewData.Model.ShowFirstName) {%>
<%= item.FirstName %><br/>
<% } %>
<% if(ViewData.Model.ShowLastName) {%>
<%= item.LasttName %><br/>
<% } %>
<% if(ViewData.Model.ShowTel) {%>
<%= item.Tel %><br/>
<% } %>
<% } %>