MVC Preview 5 - ViewData / HTML Helper Quirk - PullRequest
       13

MVC Preview 5 - ViewData / HTML Helper Quirk

1 голос
/ 22 сентября 2008

Следующий код находится в действии /Courses/Detail:

    [AcceptVerbs("GET")]
    public ActionResult Detail(int id)
    {
        ViewData["Title"] = "A View Title";
        return View(tmdc.GetCourseById(id));
    }

Метод tmdc.GetCourseById(id) возвращает экземпляр типа Course для представления. В представлении я использую

<%= HTML.TextBox("Title")%>

для отображения значения свойства Title для объекта Course. Вместо этого в текстовом поле отображается строка A View Title. Это нормальное / ожидаемое поведение? Как лучше всего справиться с этим?

Обновление
В качестве обходного пути я изменил ViewData["Title"] на ViewData["VIEW_TITLE"], но хотел бы более чистый способ справиться с этим столкновением или узнать, является ли это ожидаемым результатом.

Ответы [ 2 ]

1 голос
/ 22 сентября 2008

Да, это поведение как задумано. Предполагается, что вы должны иметь возможность отображать (на ваш взгляд) недопустимый пользовательский ввод, который фактически никогда не может быть назначен как свойство экземпляра типа вашей модели. Вы можете прочитать больше об этой функции в этом блоге .

Ваш обходной путь в порядке, но он подчеркивает проблему пространства имен перегруженного представления. Имейте в виду, что в дополнение к свойствам вашей модели и ViewData, там также есть вещи TempData, ModelState и HTML.

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

1 голос
/ 22 сентября 2008

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

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