ASP.NET MVC: «не содержит определения для» и 3 разных ошибки в зависимости от моих изменений (пожалуйста, прочтите первое предложение поста) - PullRequest
1 голос
/ 24 мая 2011

мой вопрос строго связан с этим вопросом ASP.NET MVC View выдает ошибку CS1061, связанную с типом объекта модели, переданного в виде ViewDdata представлению , но моя репутация слишком мала, чтобы добавить туда комментарий икогда я добавил свой вопрос в качестве «ответа», он был удален ... Поэтому, пожалуйста, прочитайте вопрос (ветку), упомянутый выше, и ответ на него.Я выполнил предложенные шаги, но у меня это не сработало из-за следующих ошибок:

(я опубликую скриншоты, чтобы показать вам и код, и ошибки. Имена переменных и т. Д.изменены по сравнению с кодом Howiecamp, но остальное то же самое, потому что это тот же шаг в этом учебнике.)

Хорошо, вот что происходит, когда у меня есть «ViewData» в цикле «foreach»: снимок экрана 1

Если я поменяю его на "Модель", как вы указали, вдруг Visual Studio не поймет "foreach": снимок экрана 2

Это понимает, если я добавлю «IEnumerable» в первую строку, как вы предложили, однако после этого он перестанет распознавать «Html.ActionLink»: снимок экрана 3: edge.imgur.com/wcgtI.jpg (извините, как новыйПользователь, я могу разместить только 2 гиперссылки: |)

Что мне делать в этом случае?

1 Ответ

0 голосов
/ 25 мая 2011

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

Извините всех занапрягает тебя.Но так как я потратил немного вашего времени, чем, возможно, я также дам правильный ответ на эту проблему (которая дала Бенджамину Андерсону , и если бы я мог, я бы дал ему репутацию, которая так ценится здесь :)), поэтомуесли кто-то последует этому учебнику и застрянет на том же этапе, он найдет ответ здесь.

Очевидно, причиной проблемы было то, что Скотт в то время использовал более старую версию MVC,Поэтому, если вы хотите, чтобы это работало, вы должны:

1) Вместо «ViewData» поставить «Модель»

Вместо

foreach (var kategoria in ViewData)

поставить

foreach (var kategoria in Model)

2) В первой строке вы должны добавить>

вместо

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

поставить

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

3) ИзменитьОпределение ActionLink!

Вместо

<%= Html.ActionLink(category.CategoryName, new { action="List", category=category.CategoryName }) %>

поставить

<%= Html.ActionLink(category.CategoryName, "List", new {category= category.CategoryName }) %>

Это было так.

...