我正在为MVC做一个简单的(我认为)教程。唯一的问题是教程使用Razor
,我需要使用ASPX
。我正在看的工作使用它。
我花了好几个小时在互联网上寻找可能性,但我仍然收到这个错误:
编译错误
描述:编译所需资源时发生错误 服务这个请求。请查看以下内容 具体的错误详情并适当修改您的源代码 编译器错误消息:CS1061:'object'不包含定义 对于'名称'而没有扩展方法'名称'接受第一个参数 可以找到'object'类型(你是否错过了using指令或 汇编参考?)源错误:
第12行:
第13行:
第14行:餐厅:<%:Model.Name%>
第15行:评级:<%:Model.Rating%>
第16行:
控制器代码为:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using EdeToFood.Models;
namespace EdeToFood.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var model = new RestaurantReview()
{
Name = "Tersiguil's",
Rating = 9
};
return View(model);
}
public ActionResult About()
{
ViewBag.Location = "Maryland, USA";
return View();
}
}
}
ASPX是:
%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2><%: ViewBag.Message %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<div >
Restaurant: <%: Model.Name %>
Rating: <%: Model.Rating %>
</div>
</asp:Content>
答案 0 :(得分:5)
如果您想使用强类型视图您必须在此行中定义页面的View Model
:
Inherits="System.Web.Mvc.ViewPage<TheViewModel>" %>
所以在你的情况下应该是;
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<RestaurantReview>" %>
如果您没有像往常一样指定任何内容,ViewModel
将是对象,并且众所周知,它没有Name
或Rating
属性。
答案 1 :(得分:0)
我相信你不希望冒号作为脚本分隔符的一部分:
<h2><% ViewBag.Message %></h2>
您还可以使用不同的语法,使用等号作为Response.Write()
的快捷方式,例如
<%=DateTime.Now %>