从javascript调用ASP.NET MVC应用程序的URL

马可

我是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期望该数据可用。

像这样:

Index.cshtml

<script type="text/javascript">
var scriptUrls = {
    listDocuments: '@Url.Action("List", "Documents")';
};
</script>

Index.ts(如果使用TypeScript)

interface PageUrls {
    readonly listDocuments: string;
};

declare var scriptUrls: PageUrls;

//

$('#table').DataTable({
    ajax: scriptUrls.listDocuments
});

Index.js

$('#table').DataTable({
    ajax: scriptUrls.listDocuments
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章