代码之家  ›  专栏  ›  技术社区  ›  Major Productions

带有部分视图的ASP.NET MVC 2编译错误

  •  1
  • Major Productions  · 技术社区  · 14 年前

    还有一个编译错误:

    错误1“Model”与声明“System.Web.Mvc.ViewUserControl.Model”c:\Users\Kevin\Documents\Visual Studio 2010\Projects\HandiGamer\HandiGamer\Views\Shared\editoremplates\AdminGameReviewViewModel.ascx 10 51 HandiGamer.WebUI冲突

    我试图使用部分视图来处理创建和编辑功能。所以,我的创建视图是:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<HandiGamer.WebUI.ViewModels.AdminGameReviewViewModel>" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
        Create New Review
    </asp:Content>
    
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    
        <h2>Create New Review</h2>
    
        <% using (Html.BeginForm()) {%>
            <%: Html.ValidationSummary(true) %>
    
            <fieldset>
                <legend>Create New Review</legend>
                <%: Html.EditorForModel() %>
    
                <p>
                    <input type="submit" value="Save" />
                </p>
            </fieldset>
    
         <% } %>
    
        <div>
            <%: Html.ActionLink("Back to Menu", "Index") %>
        </div>
    
    </asp:Content>
    
    <asp:Content ID="Content3" ContentPlaceHolderID="CSSandJavaScript" runat="server">
    </asp:Content>
    

    局部视图是:

    <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<HandiGamer.WebUI.ViewModels.AdminGameReviewViewModel>" %>
    
    <p>
        <%: Html.Label("Game Title") %>
        <%: Html.TextBoxFor(Model => Model.GameData.GameTitle) %>
        <%: Html.ValidationMessageFor(Model => Model.GameData.GameTitle) %>
    </p>
    <p>
        <%: Html.LabelFor(Model => Model.GameData.Genre) %>
        <%: Html.DropDownList("Genre", new SelectList(Model.AllGenres, "GenreID", "Name", Model.GameData.GenreID)) %>
    </p>
    <p>
        <%: Html.Label("Platforms") %><br />
        <% for (int i = 0; i < Model.AllPlatforms.Count(); ++i) { %>
           <%: Model.AllPlatforms[i].Platform.Name %> <%: Html.CheckBoxFor(plat => plat.AllPlatforms[i].IsSelected)%><br />
        <% } %>
    </p>
    <p>
        <%: Html.Label("Review Title") %>
        <%: Html.TextBoxFor(model => model.GameData.Content.Title) %>
    </p>
    <p>
        <%: Html.Label("Review") %>
        <%: Html.TextAreaFor(model => model.GameData.Content.Text) %>
    </p>
    <p>
        <%: Html.Label("Review Score") %>
        <%: Html.DropDownList("Score", new SelectList(new int[] {1, 2, 3, 4, 5}, "ReviewScore")) %>
    </p>
    <p>
        <%: Html.LabelFor(model => model.GameData.Pros) %><br />
        <%: Html.TextBox("Pros[]") %><br />
        <%: Html.TextBox("Pros[]") %><br />
        <%: Html.TextBox("Pros[]") %><br />
        <%: Html.TextBox("Pros[]") %><br />
        <%: Html.TextBox("Pros[]") %>
    </p>
    

    所讨论的行是试图创建第一个DropDownList的行,特别是在我编写Model.allgenes时。调用模型就是抛出错误的原因。这很令人困惑,因为其他访问模型的尝试都不会触发错误。

    1 回复  |  直到 14 年前
        1
  •  1
  •   marcind    14 年前

    部分中的前几个html助手使用大写的“Model”而不是小写的“Model”作为lambda参数。你有

    <%: Html.TextBoxFor(Model => Model.GameData.GameTitle) %>
    

    但应该是

    <%: Html.TextBoxFor(model => model.GameData.GameTitle) %>