Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这个继承的视图不渲染?_C#_.net_Asp.net Mvc - Fatal编程技术网

C# 为什么这个继承的视图不渲染?

C# 为什么这个继承的视图不渲染?,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我尝试了以下方法: 我有一个共享库.dll,其中包含以下文件: 意见 搜索 PowerSearch.aspx PowerSearch.aspx.cs PowerSearch.aspx.designer.cs PowerSearch.aspx文件包含我的html代码。 PowerSearch.aspx.cs文件包含以下内容: using System.Web.Mvc; using CommonProject.Web.Shared.Controllers; namespace CommonProj

我尝试了以下方法:

我有一个共享库.dll,其中包含以下文件:

意见 搜索 PowerSearch.aspx PowerSearch.aspx.cs PowerSearch.aspx.designer.cs PowerSearch.aspx文件包含我的html代码。 PowerSearch.aspx.cs文件包含以下内容:

using System.Web.Mvc;
using CommonProject.Web.Shared.Controllers;

namespace CommonProject.Web.Shared.Views.Search
{
    public partial class PowerSearch : ViewPage<SearchViewData>{}
}
没有编译错误,也没有运行时异常。只有一个巨大的空白页


有人知道吗?

确保程序集dll位于您引用的bin文件夹中。另外,请尝试将程序集命名空间添加到web.config,否则视图将无法找到继承的页面

<pages> <namespaces> <add namespace="CommonProject.Web.Shared"/>
在类库中添加一个ASPX页面有多困难?!选择“添加新项目…”时,它不在默认列表中

我知道在一个单独的库DLL/程序集中存储控制器和模型是可以的,但我很确定存储或共享视图并不是那么简单。问题是默认视图引擎正在磁盘上的特定文件夹中查找视图~/Views/Controller/ViewName.as[pc]x或~/Views/Shared/ViewName.as[pc]x。对于库DLL,编译器实际上不知道它可以对ASPX文件做什么。它不是代码,所以除非您有一个“构建操作”集合,否则它将忽略它。有各种“构建操作”,但我认为您唯一的选择是“复制”和“嵌入为资源”。“复制”不会复制到您需要的文件夹中,也不会复制到ASP.NET MVC web项目中的“视图”文件夹中,尽管您可以编写一个构建脚本,或者只需做一点工作就可以完成

Castle Monorail公司的哈米特(Hammett),现在是微软的一名员工,他提供了一个示例,允许您使用定制的VirtualPathProvider类在库程序集中存储视图,该类能够深入DLL并提取作为资源嵌入的视图。示例应用程序目前只是一个概念,因此您可能会遇到一些障碍,但它似乎可以工作,看起来是一个令人兴奋的方向。你可以在他的博客上找到:。下载代码并进行一些探索

这篇博文的作者与上述作者不同,但它对该主题进行了另一次检查,并指向StackOverflow上的另一篇博文,其中提出了一个类似的问题:


我看过Phil Haaaaaack关于在数据库中存储视图的帖子。它使用Ruby脚本而不是Web表单,所以我不能100%确定您是否可以修改他的示例以满足您的需要。请在此处查看:.

该.aspx文件的源代码是什么样的?确保在page指令中继承视图,如下所示:

<%@ Page Title="" Inherits="CommonProject.Web.Shared.Views.Search.PowerSearch" %&>
此外,如果不想在page指令中指定整个命名空间,可以将其添加到web.config中的部分:

<add namespace="CommonProject.Web.Shared.Views.Search"/>

我猜是因为dll中的Html没有被提取出来呈现。但我不确定。dll在bin文件夹中。但是我没有添加名称空间。但是使用我们的无名称空间规则并不重要。恼人的是它没有扔任何东西。只是一个空白页…我现在还注意到视图被直接复制到我的bin文件夹中。在你的程序集中有aspx、aspx.cs和aspx.designer.cs吗?您应该只需要assembly.Thx中的aspx.cs文件。我之前看过菲尔的帖子,但在这种情况下没有想到。我将查看mef&mvc示例。我没有添加=>new,我只是有三个站点项目具有相同的视图。因为我不知道如何在一个单独的项目中获取视图,但我一直在维护这三个视图。人类疏忽的预期问题。。。这实际上是另一个,就是这样,我正在集中这个东西。而且,我只是把视图从一个项目拖到了库中。但这似乎不是那么理想。IDE不再将其识别为视图,因此不再支持Html和模型属性:这是一个检查。但是我没有包含名称空间,因为我希望继承视图的名称相同,所以无论如何我都需要名称空间指令。
<add namespace="CommonProject.Web.Shared.Views.Search"/>