ASP.NET MVC C #: ввод данных из нескольких таблиц / запросов в представление - PullRequest
3 голосов
/ 06 августа 2009

Хорошо, я все еще изучаю asp.net и инфраструктуру MVC и преобразовываю свои знания из классического ASP и VB - так что, пожалуйста, будьте осторожны.

Мой первый вид (/ home / details / X) работает нормально благодаря предыдущей помощи, указывающей мне правильное направление , теперь мне нужно добавить данные из нескольких таблиц и запросов / представлений к представлению MVC (я ненавижу, что SQL и MVC оба используют представление слова для различных значений).

Я не ищу, чтобы кто-то написал для меня ответ (если он не чувствует себя действительно энергичным), тем более, чтобы кто-то указывал мне правильное направление того, на что я должен смотреть и читать, чтобы понять это и сделай это сам.

Моя проблема

Есть несколько наборов данных, которые мне нужно отобразить в этом представлении, и для каждого отдельного набора данных установлены правильные отношения PK / FK 1-M, и результирующие записи должны будут проходить по циклу.

Как бы я это сделал раньше

В мои классические дни ASP я бы просто определил SQL-запрос в заголовке страницы, на которой должны были использоваться данные, с оператором select в виде:

SELECT * FROM query_name
WHERE query_uniquecolumnname = Request.QueryString("value")

После того, как это будет сделано, вы должны установить значение do while query_name NOT BOF / EOF, а затем добавить имена полей, которые вы хотели получить из этого запроса, и все было сделано.

Как мне добиться этого сейчас?

Итак, как быстро перейти к моим классическим знаниям ASP, как мне добиться того же результата с MVC?

Таблицы / представления, которые я хочу использовать, уже определены в моей модели данных (и там отображаются взаимосвязи, которые, я бы предположил, является плюсом), мне просто нужно выяснить, как я мог бы вызвать их на странице и используйте идентификатор записи, отображаемой в представлении «Подробности», для отображения только связанных данных.

Заранее спасибо

Ответы [ 3 ]

8 голосов
/ 06 августа 2009

Концепция, которую вы ищете, называется ViewModel . По сути это пользовательский класс, который вы пишете, который содержит все данные, которые будут использоваться в вашем представлении. Таким образом, он отвечает за объединение всех данных из разных таблиц и представление их в качестве свойств. Если вы используете слой доступа к данным, это часто так просто, как объединение нескольких объектов. Если вы используете сырой SQL для этого, то вы выполняете свои запросы при обращении к свойствам.

Тогда вы бы сделали свой View наследуемым от ViewModel, вот так:

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

Теперь в вашем View вы можете получить доступ ко всем различным свойствам вашего объекта, просто написав такие выражения, как:

<%= Html.TextBox("MyProperty", Model.MyProperty) %>

Чтобы построить ваше представление из вашего контроллера, создайте новый экземпляр вашего класса (MyViewModel), передайте ему идентификатор нужной вам записи сведений, и логика вашего класса позаботится о получении правильных данных. Затем верните свой взгляд из контроллера, как обычно.

   var myDetailsModel = new MyViewModel(detailsID);
   return View(myDetailsModel);
0 голосов
/ 06 августа 2009

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

RenderAction позволяет вам использовать метод контроллера, выделенный для этой конкретной части представления (фактически, подпредставления), так что вы можете передать один набор данных со строго типизированными данными этому «подпредставлению».

RenderAction находится в сборке Microsoft.Web.Mvc ("futures").

Если вы новичок в этом, я прошу прощения;это немного кровоточит, но вам все равно придется это знать.Обязательно сначала ознакомьтесь с руководством NerdDinner.

http://www.andreas -schlapsi.com / 2008/11/01 / renderaction-and-subcontrollers-in-aspnet-mvc /

http://davidhayden.com/blog/dave/archive/2009/04/04/...

0 голосов
/ 06 августа 2009

Я бы порекомендовал прочитать этот учебник по ASP.NET MVC

http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx

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

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

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