5

我有一个 MVC2 网站,它使用来自其他程序集的视图。为此,我将视图标记为 "Embedded Resource"

我能够看到视图,但是现在,当我更改视图时,我再也看不到更改了。

我将视图称为嵌入式资源的方式与此类似:

return View("~/Extension/Extensions.MyExtension.dll/" +
    "Extensions.MyExtension.Views.MyItem.Details.ascx", entity);

在这种情况下,“扩展”部分表示必须将视图作为嵌入式资源加载。以下部分表示包含视图的程序集。最后一部分是视图的位置(包括命名空间)。

在我更改视图的全部内容后,如何仍然显示来自早期视图的数据。甚至取消将视图标记为嵌入式资源。

为了确保我拥有最新的 Extensions.myExtension.dll 程序集,我将程序集复制到了网站的 bin 文件夹中。我用反射器检查了组件,看看组件中是否有正确的视图。这是正确的观点,但我仍然看到旧观点。

更改视图的名称可以暂时解决问题,但对我来说不是一个好的解决方案。当我将视图的名称更改回原来的名称时,会显示旧视图。

4

3 回答 3

2

在我看来,如果数据被缓存并且 DLL 文件没有被视为已更改。您的 web.config 中是否有属性“optimizeCompilations”?检查它是否设置为假。否则(如果为真)仅重新编译更改的 DLL 文件。

可以在MSDN 页面上找到更多信息。

例如:

<compilation debug="true" defaultLanguage="c#" targetFramework="4.0"
    optimizeCompilations="false">
于 2011-01-12T10:44:09.247 回答
0

您可能需要重新编译项目,因为视图在编译时嵌入到生成的程序集中。如果您只是更改 ASCX 文件而不重新编译,如果您只是刷新浏览器,更改将不会生效。

于 2011-01-11T17:37:32.427 回答
0

您需要重建您的完整项目。如果这也不能解决问题,请清理项目然后构建。

于 2011-01-12T10:18:44.640 回答