Вопрос

Я смотрю на новую версию ASP.NET MVC (смотрите здесь более подробную информацию, если вы ее еще не видели), и у меня возникли довольно простые проблемы с отображением содержимого объекта.

В моем контроле у меня есть объект типа Person, который я передаю представлению в ViewData.Model.Пока все хорошо, и я могу извлечь объект в виде, готовом к отображению.Однако чего я не понимаю, так это того, как мне нужно вызвать Html.DisplayFor() метод для того, чтобы вывести данные на экран.Я попробовал следующее...

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>

но я получаю следующее сообщение:

CS0136:Локальная переменная с именем 'p' не может быть объявлена в этой области, потому что это придало бы другое значение 'p', которое уже используется в 'родительской или текущей' области для обозначения чего-то другого

Я знаю, что это не то, что я должен делать - я знаю, что переопределение переменной приведет к этой ошибке, но я не знаю, как получить доступ к объекту из контроллера.Итак, мой вопрос в том, как мне передать объект в представление, чтобы отобразить его свойства?

Н.Б.Я должен добавить, что я читаю об этом в свое ограниченное свободное время, так что вполне возможно, что я упустил что-то фундаментальное.

ТИА

Это было полезно?

Решение

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

Итак, в вашем случае вы должны объявить свое представление с типом Person в качестве типа модели (например something.something.View<Person>) (извините, я не помню точных названий, но это должно иметь смысл), а затем при вызове Html.DisplayFor(p => p), p принял бы значение переданного значения модели (Person) в представление.

Надеюсь, это имело смысл.

Другие советы

p - это уже имя переменной;и имена переменных должны быть уникальными во всей текущей области.Следовательно, DisplayFor(p=>p) недопустим, поскольку вы объявляете там новую переменную 'p'.Таким образом, компилятор не знает, использовать ли ваш Person p или переменную (p =>).

Так что просто переименуйте его в

<%= Html.DisplayFor(person => person) %>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top