Возможно, это просто абсолютно неправильно, но назад в эпоху Веб-форм Вы возвратили бы Набор данных, который Вы затем свяжете с сеткой. Но теперь в MVC Вы, как предполагается, не передаете таблицу данных, потому что Вы не можете сериализировать его, и он технически передает объекты в Представление, где он не принадлежит? Но как же я предназначен для отображения данных по представлению?! Я не могу использовать LINQ для классов SQL здесь, так как это - чистое в структуре данных оперативной памяти.
Идеально я был бы точно так же, как к способному, чтобы иметь объект, которого я могу выполнить итерации в рамках представления.
Я действительно в чем-то вроде потери, я прочитал статью от "Gu", и я могу только суммировать это, я должен пасовать назад Объект ViewData вместо этого?? Я схожу с ума здесь?
Аплодисменты из Англии
Jon
Статические библиотеки содержат код, скопированный в исполняемый файл. Код в библиотеке, на который не ссылается программа, удален. Программа с только статическими библиотеками не имеет зависимостей во время выполнения.
Динамические библиотеки связываются во время выполнения - программа со ссылками на динамическую библиотеку загружается и связывается с библиотекой при ее запуске (или по запросу).
Перемещаемая библиотека - это еще одно слово для динамической библиотеки. При связывании с динамической библиотекой вычисляются адреса функций, содержащихся в ней, в зависимости от места загрузки библиотеки в память. Они являются "перемещаемыми", поскольку адреса содержащихся функций не определяются во время соединения. (В статической библиотеке адреса вычисляются в течение времени соединения.)
Файл объекта (.o) содержит скомпилированный код, но не содержит окончательных адресов всех функций. Связывание - это процесс, в котором компоновщик проходит через все объектные файлы и вычисляет правильный адрес для каждой вызываемой функции.
-121--4213363-Это совсем не "неправильно", это просто не то, что крутые парни обычно делают с MVC. В качестве отступления, я хотел бы, чтобы некоторые из ранних демозаписей ASP.NET MVC не пытались запятнать в Linq-to-Sql одновременно. Это довольно потрясающе и хорошо подходит для MVC, конечно, но это не обязательно. MVC ничего не мешает использовать ADO.NET . Например:
действие Диспетчера:
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
DataTable dt = new DataTable("MyTable");
dt.Columns.Add(new DataColumn("Col1", typeof(string)));
dt.Columns.Add(new DataColumn("Col2", typeof(string)));
dt.Columns.Add(new DataColumn("Col3", typeof(string)));
for (int i = 0; i < 3; i++)
{
DataRow row = dt.NewRow();
row["Col1"] = "col 1, row " + i;
row["Col2"] = "col 2, row " + i;
row["Col3"] = "col 3, row " + i;
dt.Rows.Add(row);
}
return View(dt); //passing the DataTable as my Model
}
Представление: (w/Модель, сильно напечатанная как Система. Данные. DataTable)
<table border="1">
<thead>
<tr>
<%foreach (System.Data.DataColumn col in Model.Columns) { %>
<th><%=col.Caption %></th>
<%} %>
</tr>
</thead>
<tbody>
<% foreach(System.Data.DataRow row in Model.Rows) { %>
<tr>
<% foreach (var cell in row.ItemArray) {%>
<td><%=cell.ToString() %></td>
<%} %>
</tr>
<%} %>
</tbody>
</table>
Теперь, я нарушаю много принципов и «лучшие практики» ASP.NET MVC здесь, поэтому, пожалуйста, поймите, что это - просто простая демонстрация. Код, создающий DataTable, должен находиться где-то за пределами контроллера, и код в представлении может быть лучше изолирован от частичного или HTML-помощника, чтобы назвать несколько способов, которыми должны делать вещи.
Вы абсолютно обязаны передавать объекты в вид , если вид должен их представлять. (Разделение проблем диктует, что точка зрения не должна нести ответственность за их создание .) В этом случае я передал DataTable как фактическое представление Model, но вы могли бы также поместить его в коллекцию ViewData. Можно также создать определенный класс IndexViewModel, содержащий DataTable и другие объекты, например приветственное сообщение.
Надеюсь, это поможет!