Что я делаю неправильно, конвертируя Razor в ASPX? - PullRequest
2 голосов
/ 05 февраля 2012

Я делаю простой (я думаю) учебник для MVC.Единственная проблема - учебник использует Razor, и мне нужно использовать ASPX.Работа, которую я просматриваю, использует ее.

Я часами искал возможности поиска в Интернете, но все еще получаю эту ошибку:

Ошибка компиляции

Описание: во время компиляции ресурса, необходимого для обслуживания этого запроса, произошла ошибка.Пожалуйста, просмотрите следующие конкретные подробности ошибки и измените ваш исходный код соответствующим образом.
Сообщение об ошибке компилятора: CS1061: «объект» не содержит определения для «имени» и нет метода расширения «Имя», принимающего первый аргумент типа «объект»'может быть найдено (вам не хватает директивы 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>

Ответы [ 2 ]

5 голосов
/ 05 февраля 2012

Если вы хотите использовать строго типизированные представления, вы должны определить 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.

0 голосов
/ 05 февраля 2012

Полагаю, вы не хотите использовать двоеточие в качестве разделителя сценария:

<h2><% ViewBag.Message %></h2>

Вы также можете использовать другой синтаксис со знаком равенства в качестве ярлыка для Response.Write(), например,

<%=DateTime.Now %>

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...