我是ASP.NET MVC的新手。阅读了许多不同的示例后,我仍然无法完成这项工作。
我捆绑了一些JS脚本,但捆绑了其中的一个(因为每页使用的是不同的主脚本)
(_Layout.cshtml)
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/datatables")
@RenderSection("scripts", required: false)
在我看来
(index.cshtml)
@section Scripts
{
<script src="@Url.Content("~/Scripts/index.js")"></script>
}
在JavaScript代码中,我试图调用我的应用程序的特定URL
(index.js)
$('#table').DataTable({
ajax: '@Url.Action("List", "Documents")'
});
当然,在我的应用程序中,使用名称DocumentsController和List方法定义了一个控制器,该控制器返回正确的JSON。
仍然似乎没有人替换我的网址
如果我将index.js包含在捆绑软件中,则不会有任何改变。错误在哪里?谁和何时替换该URL?
谢谢
您不能在*.js
文件内使用Razor代码,因为它们直接作为静态文件提供,并且不被ASP.NET处理(*.ts
文件也不是因为它们是*.js
在生成时被编译的)。
相反,您可以做的是在“视图/页面”中呈现Razor生成的JavaScript,并让您的TypeScript或JavaScript期望该数据可用。
像这样:
<script type="text/javascript">
var scriptUrls = {
listDocuments: '@Url.Action("List", "Documents")';
};
</script>
interface PageUrls {
readonly listDocuments: string;
};
declare var scriptUrls: PageUrls;
//
$('#table').DataTable({
ajax: scriptUrls.listDocuments
});
$('#table').DataTable({
ajax: scriptUrls.listDocuments
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句