gpt4 book ai didi

cshtml @Url.Action(Action, Controller) 的 JavaScript 类比

转载 作者:行者123 更新时间:2023-12-02 13:49:30 25 4
gpt4 key购买 nike

作为我的项目的一部分,我将 cshtml 脚本部分分离到它自己的文件中。除了一行之外,大部分都成功了。最初, View 文件的脚本部分包含以下行:

"sAjaxSource": "@Url.Action("CertificationRun", "Certifications")", //<= part of DataTable() process

我与其他程序员交谈,他们说它将在根目录链接中附加行,如 $("#RootDirectory").val() + "/ControllerName/ActionName"

所以正确的调用是localhost/ControllerName/ActionName

我在不同的部分尝试了这个建议,最终得到以下结果:

var ajSource = $("#RootDirectory").val() + "/ExpiredCert/ExpiredCertRun";

$('.ssdatatable').DataTable({
//irrelevant block
"lengthMenu": [[10, 25, 50, 100, 500], [10, 25, 50, 100, 500]],
"bProcessing": true,
"sDom": "TBflrtip",
"bServerSide": true,
//end irrelevant block

//"sAjaxSource": "@Url.Action("CertificationRun", "Certifications")",
//"sAjaxSource": "$(\"#RootDirectory\").val() + \"/ExpiredCert/ExpiredCertRun\" ",
"sAjaxSource": ajSource,

//more code
,
"aoColumns": [{ "mData": "VariableName" },//more columns
]
});
}

但是,启动后,我收到以下错误:

DataTables 警告:表 id={id} - Ajax 错误

翻阅官方后documentation ,我用建议的步骤调试了该部分。它返回错误 500。因此,在深入研究该错误之前,我想确保我正确理解 @Url.Action("CertificationRun", "Certifications") 的转换并正确转换它。

这样,我将能够消除我的一些理论并朝着正确的方向前进。

最佳答案

您应该在 razor View 中执行 Url.Action 方法,该方法将在服务器中执行并使用该结果(这是操作方法的相对 url)并将其传递通过全局变量添加到你的js代码中。确保使用 JavaScript 命名空间来传递值以避免值覆盖。

所以在你的 Razor View 中,你将有这样的代码

<script>
var myApp = myApp || {};
myApp.urls = myApp.urls || {};
myApp.urls.certificateRunUrl= '@Url.Action("CertificationRun","Certifications")';
</script>
<script src="~/Scripts/PageSpecificExternalJsFile.js"></script>

还有你的PageSpecificExternalJsFile.js,你可以这样读

var url = myApp.urls.certificateRunUrl;
//use url for your datatable call

另一个选项是将其设置为表单元素并使用 jQuery 在外部 js 代码中读取该值

 <div id="urls" 
data-certificateRunUrl="'@Url.Action("CertificationRun","Certifications")" />

还有你的PageSpecificExternalJsFile.js,你可以这样读

var url = $("#urls").data("certificateRunUrl");
//use url for your datatable call

当您需要基于表单中输入元素的 url 时,此方法非常有用(例如:要获取有关输入元素值更改事件的数据的 url,您可以将此 url 保留在输入元素数据字段中)

关于cshtml @Url.Action(Action, Controller) 的 JavaScript 类比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com