ASP.NET MVC 2 ошибка компиляции с частичным представлением - PullRequest
1 голос
/ 06 ноября 2010

Еще одна ошибка компиляции для меня:

Ошибка 1 «Модель» конфликтует с объявлением «System.Web.Mvc.ViewUserControl.Model» c: \ Users \ Kevin \ Documents \ Visual Studio 2010 \ Projects \ HandiGamer \ HandiGamer \ Views \ Shared \ EditorTemplates \ AdminGameReviewViewModel. ascx 10 51 HandiGamer.WebUI

Я пытаюсь использовать частичное представление для обработки функциональных возможностей создания и редактирования. Итак, мой вид Create:

<%@ 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.AllGeneres. Именно вызов Model является причиной ошибки. Это сбивает с толку, поскольку ни одна из других попыток доступа к модели не вызывает ошибку.

1 Ответ

1 голос
/ 06 ноября 2010

Первые несколько помощников html в вашем партиале используют прописную «Модель» вместо строчной «модели» для параметра лямбда-выражения. У вас есть

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

Но это должно быть

<%: Html.TextBoxFor(model => model.GameData.GameTitle) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...