Представление не генерируется на основе свойств модели - PullRequest
0 голосов
/ 26 марта 2011

У меня есть пользовательская модель, например, так:

public class ViewModel
{
    [DisplayName("Property One")]
    string PropertyOne { get; set; }

    [DisplayName("Property Two")]
    string PropertyTwo { get; set; }

    ....
}

Когда я создаю новый строго типизированный вид на основе этой модели, я получаю следующее:

<% using (Html.BeginForm()) {%>
    <%= Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Fields</legend>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

Если я беруиз атрибута DisplayName он все еще не работает.Я также заметил, что если я изменю модель и воссоздаю вид, основанный на этой модели, он не учитывает новые изменения.Как будто VS где-то кеширует модель, и единственный способ обновить ее - закрыть / заново открыть решение, а затем создать представление.

LogOnModel в файле AccountModels.cs, которыйсоздается по умолчанию практически одинаково (только у него меньше свойств) и это прекрасно работает.Может быть, я что-то упускаю при определении своей модели?Кажется, я не могу понять, что я делаю здесь неправильно.

Редактировать

Также заметили, если я попытаюсь вручную ввести разметку вида, например

<%@ Page ... Inherits="System.Web.Mvc.ViewPage<MySite.Models.ViewModel>" %>

...

<div class="editor-label">
    <%= Html.LabelFor(model => model.PropertyOne) %>
</div>
<div class="editor-field">
   <%= Html.TextBoxFor(model => model.PropertyOne)%>
   <%= Html.ValidationMessageFor(model => model.PropertyOne)%>
</div>

Я получаю ошибку компилятора CS1061: 'MySite.Models.ViewModel' does not contain a definition for 'PropertyOne'.

В данный момент я пришел к выводу, что Visual Studio действительно содержит ошибки в этой области.Я на последней версии ( 9.0.30729.1 SP )

1 Ответ

1 голос
/ 26 марта 2011

..... Нет, подождите, поцарапайте это. Это мой мозг глючит, я скопировал и вставил свойства из интерфейса, чтобы сэкономить время при наборе текста, и просто заметил, что забыл установить их на public.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...