所以我的主页上有一个Javascript函数。当我从该母版页派生的页面中调用它时,它可以正常工作,但是,在不起作用的页面上,它显然不起作用。我也不能将其放在另一个.js文件中,因为它在其中使用了一些嵌入式c#代码,因此它必须位于<script>标记内。

这是功能:

function GridExport(viewUrl, fileName)
    {
        var actionUrl = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/mvc/Indications.cfc/ExportToExcel")%>";
        var guid = GetGUIDValue();
        window.open((actionUrl + "?id=" + guid + "&viewName=" + viewUrl + "&fileName="  + fileName), null, null, null);
    }


有没有一种方法可以仅将我的母版页中的Javascript定义包含在另一个视图中而无需从母版页派生?

最佳答案

您可以创建包含此UserControl<script>或将actionUrl抽象为GridExport函数的参数

function GridExport(viewUrl, fileName, actionUrl)
{
    var guid = GetGUIDValue();
    window.open((actionUrl + "?id=" + guid + "&viewName=" + viewUrl + "&fileName="  + fileName), null, null, null);
}




避免此路径问题的另一种便捷方法是使用全局变量来定义站点的根:

var root = "<%= System.Web.VirtualPathUtility.ToAbsolute("~/") %>";


那么您的函数可以始终使用此变量并附加所需的内容:

function GridExport(viewUrl, fileName)
{
    var actionUrl = root + "mvc/Indications.cfc/ExportToExcel";
    var guid = GetGUIDValue();
    window.open((actionUrl + "?id=" + guid + "&viewName=" + viewUrl + "&fileName="  + fileName), null, null, null);
}

08-25 11:57
查看更多