如何在 Razor 页面上动态构建 ajax url 操作字符串?

How do I dynamically construct an ajax url action string on Razor page?

我正在使用 Razor 页面构建 Asp.NetCore 应用程序。 我正在尝试创建一个泛型来在页面中构建 Url 操作。

理想情况下,我想创建一个 javascript 可以跨多个页面共享的功能。

考虑以下 Javascript 函数:

Function Foo( actionName, entityType) {
    
    // This is what I'd like the result to be....
    // var urlAction = "'@Url.Action("DeleteCompany","Company")'";
    var urlAction = "'@Url.Action(""" + actionName + entityName + """,""" + entityName """)'""";

    var result = DevExpress.ui.dialog.confirm("message", "title");  
    result.done(function (dialogResult) {
        $.ajax({
            url: urlAction,
            data: { companyId: entityId },
            type:"Post",
            success: function () {
            }
        });
    });

我希望能够动态构建我的 urlAction 字符串,以便我可以通用地使用它 跨越我的应用程序中的剃刀页面。

可以吗? 如果是这样,我该如何正确构造 urlAction 字符串?

您想创建可以跨多个页面共享的js 函数。要实现此目标,您需要在外部 js 文件中创建此函数。此外C#代码不能在外部js文件中使用。您可以设置隐藏输入并将 @Url.Action() 设置为值。

像下面这样更改您的代码:

YourJs.js:

function Foo() {
    var urlAction = $("#myUrl").val();
    console.log(urlAction);
}

查看:

<input id="myUrl" hidden value="@Url.Action("Privacy","Home")"/>
<input type="button" value="Create" onclick="Foo()" />

@section Scripts
{
    <script src="~/js/YourJs.js"></script>
}