2010-11-06 3 views
1

еще одна ошибка компиляции для меня:ASP.NET MVC ошибка 2 компиляции с частичным видом

Ошибка 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

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

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

ответ

1

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

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

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

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

Да, вы правы. Какой мозговой пердит был с моей стороны. Держись, глядя на это неправильно. Благодаря! –