Имея проблему в приложении MVC3 Razor (ASP.NET) при попытке доступа к представлению Модель выглядит так (аннотации удалены)Получение «Объекта не содержит определения для xxx» с использованием LabelFor в строго типизированном представлении
namespace MvcTest.Models {
public class ContactMeModel {
public string From { get; set; }
public string Subject { get; set; }
public string Message { get; set; }
}
}
The View есть что-то вроде этого (частичный, просто кладя ту часть, которая дает ошибку, не пройти, что ...
@model MvcTest.Models.ContactMeModel
@{
ViewBag.Title = "test"
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<div class="editor-label">
@Html.LabelFor(model => model.From)
</div>
}
Пространства имен являются правильными, но IntelliSense показывает красный цвет на части. От части разметки, как если бы она не узнайте модель, но это происходит и с представлениями, которые тоже работают.
Когда я достигаю View я получаю следующее сообщение об ошибке:
CS1061: 'object' does not contain a definition for 'From' and no extension method 'From' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
Это странно, потому что (а) Веб-проект Mvc ИМЕЕТ ссылку на DLL, которая содержит модели (б) Весь проект имеет (c) Ссылка на модель в представлении имеет правильное полное имя модели (d) существует класс модели (e) нет ошибок компиляции, кроме времени выполнения на этом представлении.
К слову, возникнет ошибка в любом у меня есть @ Html.LabelFor, так, например, фондовый LogOn.cshtml имеет линию, которая производит ту же ошибку:
@Html.LabelFor(m => m.UserName)
И в «IntelliSense «Я вижу текст« UserName », подчеркнутый красной линией зигзагообразно, и intellisense упоминает ту же ошибку. Но если на той же странице я навешиваю строку @model на имя модели и делаю «Перейти к определению», VS выводит меня на определение. Значит, он знает, что такое модель, но потом не совсем ?! Если пространство имен модели неверно, я получаю ошибку «навигации», когда я выбираю «Перейти к определению».
метод действияКонтроллер выглядит следующим образом:
public ActionResult Contact()
{
return View(new Coralys.PanamaVibes.Mvc.Models.ContactMeModel());
}
да так, она возвращает правильную модель, а не анонимный тип.
Вы уверены, что код успешно завершен? создайте свой код из представления, что он получает проблемы – Jorge
Вы пытались настроить VS для компиляции просмотров? Инструкции здесь: http://www.dotnetcurry.com/ShowArticle.aspx?ID=698 – hatchet
@Jorge Да, он успешно работает, без ошибок только во время выполнения. –