【问题标题】:Can you open a view in asp.net MVC that does not have the view engine's extension?您可以在没有视图引擎扩展的 asp.net MVC 中打开视图吗?
【发布时间】:2010-11-16 04:18:31
【问题描述】:

我想将代码包含在我的 Asp.net MVC 页面视图内的 javascript 文件中(该视图是一个 javascript 结果,如 here 所述。我想这样做是为了整合我的 javascript,以降低为我的 RIA 加载复杂 GUI 的开销,以提高压缩效率并简化调试。

问题是我正在使用 Ext 设计器来创建我的 GUI。每次导出我的项目时,它都会为每个类创建 2 个 .js 文件,而且由于我的 GUI 非常复杂,我已经有很多 .js 文件。

因此,我将(在运行时)所有 javascript 文件合并为一个的想法是让我的主要 JavaScriptViewResult Razor 视图包含对 .js 文件的 Html.RenderPartial() 视图调用。

但是,如果我调用 Html.RenderPartial("GUI/BaseLayout.js"),我会收到异常,因为它会尝试查找“GUI/BaseLayout.js.cshtml”。

有什么方法可以强制 Asp.net MVC 不将视图引擎的扩展添加到 RenderPartial 调用中,还是有更好的方法将我的所有 .js 文件连接到一个输出的脚本文件中?

【问题讨论】:

    标签: c# asp.net-mvc extjs


    【解决方案1】:

    您可以尝试为 HtmlHelper 编写自己的扩展方法,该方法读取 .js 文件并将它们连接起来。但是按请求执行此操作可能会有点成本。

    第二种选择是使用像 Chripy (chirpy.codeplex.com) 这样的工具。这是一个 Visual Studio 附加组件(不是插件,因此它应该适用于 Express 版本)。它主要用于编译 .less 文件,但它可以做的更多。例如,您可以制作一个如下所示的 .chirp.config 文件:

    <?xml version="1.0"?> 
    <root>        
        <FileGroup Name="main.scripts.js"> 
            <Folder Path="/" Type="*.min.js" Minify="false"/> 
            <File Path="MicrosoftAjax.js" /> 
        </FileGroup> 
    </root>
    

    如果您现在将它放在 Scripts 文件夹中,它将找到所有 .min.js 文件和 MicrosoftAjax.js 文件并将它们一起添加到 main.scripts.js 文件中。您可能不得不让处理所有 .js 文件变得更复杂一些,但至少它们会被预编译。

    【讨论】:

    • 这太棒了,非常适合我的需求!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2010-09-07
    • 2010-10-13
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多