1

Book Professional ASP.NET MVC 2 の NerdDinner 部分をフォローしています。現在、DinnerFormViewModel と Renderpartial Dinnerform を実装する必要がある部分にいます。この本にはいくつかのエラーが含まれているので、インターネットで検索して自分で修正しようとしました..

私はDinnerFormViewModelをModelsフォルダに入れました。これはコードです:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace NerdDinner.Models
{
    public class DinnerFormViewModel : Controller
    {
        private static string[] _countries = new[]{
        "USA",
        "Ireland",
        "Scotland",
        "Namibia"
    };

        //Properties
        public Dinner Dinner { get; private set; }
        public SelectList Countries { get; private set; }

        //Constructor
        public DinnerFormViewModel(Dinner dinner)
        {
            Dinner = dinner;
            Countries = new SelectList(_countries, dinner.Country);
        }


        // GET: /DinnerFormViewModel/

        public ActionResult Index()
        {
            return View();
        }

    }
}

次に、DinnerForm.ascx (部分クラス) を作成しました。

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewPage<NerdDinner.Models.DinnerFormViewModel>" %>


<%: Html.ValidationSummary("Please correct the errors and try again.") %>

<% using (Html.BeginForm()) { %>

    <fieldset>

        <p>
            <%: Html.LabelFor(m => m.Dinner.Title) %>
            <%: Html.TextBoxFor(m => m.Dinner.Title) %>
            <%: Html.ValidationMessageFor(m => m.Dinner.Title, "*") %>

等...

そして、私は次のようにedit.aspxを作成しました:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<NerdDinner.Models.DinnerFormViewModel>" %>

<asp:Content ID="Title" ContentPlaceHolderID="TitleContent" runat="server">
    Edit: <%: Model.Dinner.Title %>
</asp:Content>

<asp:Content ID="Edit" ContentPlaceHolderID="MainContent" runat="server">

    <h2>Edit Dinner</h2>

    <% Html.RenderPartial("DinnerForm"); %>

</asp:Content>

ここでアプリケーションを起動すると、<% Html.RenderPartial("DinnerForm"); でエラーが発生します。%> ポップアップが表示されます: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\c8cca855\23406a1e\App_Web_dinnerform.ascx.32d6c807.tczxq3bd.0.cs(166): error CS0030 : タイプ 'ASP.views_dinners_dinnerform_ascx' を 'System.Web.Mvc.ViewUserControl' に変換できません

名前空間と関係があると思いますが、エラーを修正できません。誰かが同じ問題に直面したか、ここにいる誰かが私を助けてくれますか?? ありがとうございました!:)

4

1 に答える 1

5

部分ビューは System.Web.Mvc.ViewUserControl から継承する必要があります。

ViewPage はフル ビュー用です。

于 2012-06-25T08:36:03.577 に答える