asp.net mvc虚拟视图和Web配置

时间:2012-11-03 14:19:29

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

有许多示例展示了如何从文件或数据库存储和检索虚拟视图,但没有一个示例显示如何配置root web.config以便应用程序正常工作,当从一个视图中检索到视图的内容时文件并包含例如@ViewBag.Title = "Some Title"行。

在这种情况下,我得到 CS0103:当前上下文中不存在名称“ViewBag”错误, 就像我从〜/ Views项目文件夹中删除web.config一样。

那么,从〜/ Views / web.config到root web.config的配置元素是什么来修复上面提到的错误?

是否可以在运行时将config元素加载到assemby中?

2 个答案:

答案 0 :(得分:1)

问题与以下事实有关:在虚拟视图的情况下,从文件或数据库中检索内容的视图继承自包含Html和Url的System.Web.Mvc.ViewStartPage,但不包含ViewBag或Ajax属性。虚拟视图如下所述

public class DynamicViewsController : Controller
{
    public ActionResult GetView()
    {
        //SomeModel model = new SomeModel() { Count = 1 };
        return View("/Virtual/VirtualViewToShow.cshtml");
    }
}

位于〜/ Views /文件夹中的视图继承自System.Web.Mvc.WebViewPage,该视图具有ViewBag和ViewData,并定义了Ajax属性。

更改操作方法的解决方法如下

public PartialViewResult GetView()
{
    //SomeModel model = new SomeModel() { Count = 1 };
    return PartialView("/Virtual/VirtualViewToShow.cshtml");
}

并添加

  @{
        Layout = "~/Views/Shared/_Layout.cshtml";
   }

到虚拟视图的文本以便加载布局。 我不知道虚拟视图继承自System.Web.Mvc.ViewStartPage的原因,但我会尝试在另一个线程中找到原因,并在创建线程时发布链接。

<强>被修改

所以说新创建的帖子的链接是here

“显示完整编译源”屏幕截图附件enter image description here

答案 1 :(得分:0)

按照上述步骤操作,你就完成了!

  • 将〜/ views / web.config的&lt; configSections&gt; 部分与根级别web.config合并
  • 现在只需将〜/ views / web.config中的&lt; system.web.webPages.razor&gt; 部分移至根级别web.config
  • 干杯:)完成了。
  • 您还应该合并&lt; appSettings&gt;,&lt; system.web&gt; &安培; &lt; system.webServer&gt; ,具有根级别web.config。