【问题标题】:The type or namespace name 'DinnerForm' does not exist in the namespace 'NerdDinner.Models' when trying to implement partial form尝试实现部分表单时,名称空间“NerdDinner.Models”中不存在类型或名称空间名称“DinnerForm”
【发布时间】:2011-09-28 15:06:09
【问题描述】:

描述:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:CS0234:命名空间“NerdDinner.Models”中不存在类型或命名空间名称“DinnerForm”(您是否缺少程序集引用?)

来源错误:

第 170 行:
第 171 行:[System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()] 第 172 行:公共类views_dinners_create_aspx:System.Web.Mvc.ViewPage,System.Web.SessionState.IRequiresSessionState,System.Web.IHttpHandler { 第 173 行:
第 174 行:private static bool @__initialized;

DinnerFormViewModel.cs:

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



namespace NerdDinner.Models
{
public class DinnerFormViewModel
{
    // Properties
    public Dinner Dinner { get; private set; }
    public SelectList Countries { get; private set; }

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

DinnerForm.ascx:

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

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

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

<fieldset>
<p>
<label for="Title">Dinner Title:</label>
<%= Html.TextBox("Title", Model.Dinner.Title) %>
<%=Html.ValidationMessage("Title", "*") %>
</p>
<p>
<label for="EventDate">Event Date:</label>
<%= Html.TextBox("EventDate", Model.Dinner.EventDate) %>
<%= Html.ValidationMessage("EventDate", "*") %>
</p>
<p>
<label for="Description">Description:</label>
<%= Html.TextArea("Description", Model.Dinner.Description) %>
<%= Html.ValidationMessage("Description", "*") %>
</p>
<p>
<label for="Address">Address:</label>
<%= Html.TextBox("Address", Model.Dinner.Address) %>
<%= Html.ValidationMessage("Address", "*") %>
</p>
<p>
<label for="Country">Country:</label>
<%= Html.DropDownList("Country", Model.Countries) %>               
<%= Html.ValidationMessage("Country", "*") %>
</p>
<p>
<label for="ContactPhone">Contact Phone #:</label>
<%= Html.TextBox("ContactPhone", Model.Dinner.ContactPhone) %>
<%= Html.ValidationMessage("ContactPhone", "*") %>
</p>

<p>
<input type="submit" value="Save"/>
</p>
</fieldset>

<% } %>

DinnersControllers.cs(创建方法)

//
// GET: /Dinners/Create

    public ActionResult Create()
    {

        Dinner dinner = new Dinner()
        {
            EventDate = DateTime.Now.AddDays(7)
        };
        return View(new DinnerFormViewModel(dinner));
    }

    //
    // POST: /Dinners/Create

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Dinner dinner)
    {

        if (ModelState.IsValid)
        {

            try
            {
                dinner.HostedBy = "SomeUser";

                dinnerRepository.Add(dinner);
                dinnerRepository.Save();

                return RedirectToAction("Details", new { id = dinner.DinnerID });
            }
            catch
            {
                foreach (var issue in dinner.GetRuleViolations())
                {
                    ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                }

                return View(new DinnerFormViewModel(dinner));
            }
        }

        return View(new DinnerFormViewModel(dinner));
    }

创建.aspx

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

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Host A Dinner
</asp:Content>

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

<h2>Host a Dinner</h2>

<% Html.RenderPartial("DinnerForm"); %>
</asp:Content>

【问题讨论】:

  • 您需要提供更多信息。我的意思是..这就像什么都没有。
  • 不确定还能提供什么。它是给我的错误吗?你还想知道什么?
  • 提供views/dinners/create.aspx,因为这似乎是错误所在。同时发布 NerdDinners.Models.Dinner 或该 cs 文件的名称。
  • 好的,我希望我已经添加了您查看我的问题所需的一切。感谢您的帮助!
  • 很高兴你得到它!玩得开心。

标签: asp.net-mvc nerddinner


【解决方案1】:

DinnerForm.ascx:

Inherits="System.Web.Mvc.ViewUserControl<NerdDinner.Models.DinnerFormViewModel>

【讨论】:

  • 不,但它们是我复制的 DinnerFormViewModel。我是否缺少该类中的引用?
  • 我创建了晚餐表单部分视图,它继承了晚餐表单视图模型
  • 更新了我的答案,但我猜是因为您尚未在问题中发布任何视图或模型代码。
  • 这行得通,但我还必须进入创建表单,以便它继承 DinnerFormViewModel。谢谢。
猜你喜欢
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 1970-01-01
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多