在视图ASP.net MVC3中缺少某些@helpers

时间:2012-03-30 17:28:50

标签: asp.net-mvc asp.net-mvc-3 razor model

我有一个过于奇怪的问题。

我正在开发一个项目,它正在转换为使用asp.net MVC。

一切都适用于控制器/模型/视图。我在控制器中可以获得每个关键字(ViewBag,ViewContext等)。

然而,在我的观点中,我只获得了一些帮助(例如@Model,@ Html),但是我错过了其他人(@ model,@ ViewBag,@ ViewContext等)

这是一个巨大的障碍(我发布代码,但我不知道哪些代码真正相关)。我的web.config是100%死的,我所有的其他MVC项目都没有这个问题。

  • Web.Config是正确的(在Views文件夹中)
  • 目标框架是正确的
  • 我可以访问控制器中的所有方法

我已经清理了项目/重新映射了它等等。其他机器上的其他机器没有这个问题,但奇怪的是我(我完全重新检查了项目)。

就像我说的,我不知道什么代码是相关的我只是希望别人有一个想法可能是错的。我很困惑,因为web.config是正确的,我没有错过任何引用(我的所有引用都指向正确的位置),我可以在控制器中使用它们。

仅仅因为我不想被大吼大叫,这里是我在视图/文件夹中的web.config的摘录

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

我遇到的最奇怪的问题之一:O

示例:

@model Project.WebUI.Models.MyModel

@{
    ViewBag.title = "hi";
}

<div>@Model.someItemInTheModel</div>

模型带有红色下划线'在当前上下文中不存在'

@model Project.WebUI.Models.MyModel

ViewBag带有红色下划线'在当前上下文中不存在'

ViewBag.title = "hi";

此行完全正常

<div>@Model.someItemInTheModel</div>

控制器,这一切都很好

public ActionResult MyView(long date)
{
   MyModel model = new MyModel();
   model.someItemInTheModel = "hi";
   return PartialView(model);
}

1 个答案:

答案 0 :(得分:0)

创建一个新的MVC3项目,并将这些web.config文件与项目中的文件进行比较。您需要在项目根目录(/web.config)和/Views/web.config中进行检查。

同时检查以确保您拥有所有相同的System.Web.*引用。