查看未基于模型属性生成

时间:2011-03-25 22:29:01

标签: visual-studio-2008 asp.net-mvc-2

我有一个这样的自定义模型:

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 个答案:

答案 0 :(得分:1)

.....不,等等,抓一点。这是我的大脑有问题,我从界面复制并粘贴属性以保存自己的一些打字,只是注意到我忘了将它们设置为public

如果有人遇到同样的问题,就会出现这种情况,因为它并不是很明显,并且花了很长时间(足够长的时间我必须在这里发帖!)来弄清楚发生了什么。