c# - NerdDinner DinnerFormViewModel 错误 CS0030 错误

标签 c# asp.net-mvc

我正在关注 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): 错误 CS0030: 无法转换类型 'ASP .views_dinners_dinnerform_ascx' 到 'System.Web.Mvc.ViewUserControl'

我认为它与命名空间有关,但我无法修复错误,有人遇到了同样的问题或者这里有人可以帮助我吗??谢谢!:)

最佳答案

您的部分 View 应继承自 System.Web.Mvc.ViewUserControl。

ViewPage 用于完整 View 。

关于c# - NerdDinner DinnerFormViewModel 错误 CS0030 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11185837/

相关文章:

asp.net - WebAPI 错误 404.0 - 未找到

c# - 面板滚动后,面板内的 DataGridView 跳转到列表的开头

c# - 3(物理)层架构效率低下吗?

c# - 如何忽略 Entity Framework Core SQLite 数据库中的外键约束?

c# - ASP.NET : How do I fetch data from a webserver every few minutes

c# - 为什么 Html.Hidden 在 C# ASP.NET MVC Razor View 中不起作用?

c# - C++ (Intel) vs Java (Hotspot) vs C# 基准问题(包括代码和结果)

c# - DbContext 和范围依赖

asp.net - 与 StackOverflow 一样出色的其他 ASP.NET Web 应用程序有哪些?

javascript - 将列表传递给 View 后如何转换列表的 C# 列表?