Я работаю над статьей ASP.NET MVC по адресу http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx. (Примечание: некоторые конструкции в этом посте устарели в MVC 1 RTM, поэтому я соответствующим образом изменил код. Возможно, это мойпроблема.)
В моем LINQ to SQL .dbml (в MyDB .designer.cs) класс Category (сгенерированный компилятором) определяется следующим образом:
namespace MVC_Basics_1.Models
{
...
[Table(Name="dbo.Categories")]
public partial class Category : INotifyPropertyChanging, INotifyPropertyChanged
{
...
}
В моем классе контроллера я определяю метод действия Categories следующим образом:
public ActionResult Categories() // /Products/Categories/ maps here
{
List<Category> categories = northwind.GetCategories();
return View("Categories", categories);
}
Затем я создаю Categories.aspx, который строго типизирован как "MVC_Basics_1.Models.Category", который помещает
<%@ ... Inherits="System.Web.Mvc.ViewPage<MVC_Basics_1.Models.Category>" %>
строка в верхней части файла.
Наконец, в .aspx у меня есть:
<% foreach (var category in ViewData) { %>
<li>
<%= Html.ActionLink(category.CategoryName, new { action="List", category=category.CategoryName }) %>
</li>
<% } %>
Два вопроса:
Во-первых, когда я просматриваю/ Products / Categories / я получаю сообщение об ошибке:
Сообщение об ошибке компилятора: CS1061: «System.Collections.Generic.KeyValuePair» не содержит определения для «CategoryName» и не имеет расширенияметод 'CategoryName', принимающий первый аргумент типа 'System.Collections.Generic.KeyValuePair 'может быть найдено (вам не хватает директивы using или ссылки на сборку?)
, и объект данных представления категории не распознает ни одно из свойств класса Category.
Чего мне не хватает?
Во-вторых, метод действия Category () контроллера возвращает список категорий (набранный как «Список категорий») в качестве данных представления для представления, но представления представления.Вспомогательный метод ActionLink ссылается на «category.CategoryName».Это не имеет смысла для меня, так как я передаю в качестве типа экземпляр категорий (не Category).Так как метод действия контроллера возвращает List, разве это не говорит о том, что представление должно быть напечатано как Категории?
ОБНОВЛЕНИЕ:
Я понял ошибку в своем вопросеи в моем подходе к этому.Я был более сосредоточен на ошибке и сравнивал свои результаты со статьей, которую я прочитал, чем с моей настоящей целью - вроде как не видеть лес сквозь деревья.Когда я подумал о том, что на самом деле пытался выполнить - передав данные модели в представление - я остановился на синтаксической ошибке и начал думать о (а) конкретном объекте, который я хотел создать в контроллере, и (б) какойэти данные я хотел бы передать на просмотр.Когда я увидел лес сквозь деревья, ответ для меня стал очевидным.@Ufuk и @ryk помогли мне понять это.