繁体   English   中英

Url.Action '@Url.Action(“Update”, “Admin”)'查询字符串在 .NET MVC 中不起作用

[英]The Url.Action '@Url.Action(“Update”, “Admin”)'query string which is not working in .NET MVC

Ajax 生成的查询字符串

url:'@Url.Action("Update","Admin")'

http://localhost:61887/Adimn/Update?id=16这不起作用但是当 url 给出为

url: '/Admin/Update'

它产生

http://localhost:61887/Adimn/Update/16

它工作正常。
为什么会这样?

这是我的脚本:


function EditUser(value) {
       $.ajax({
           url: '@Url.Action("Update", "Admin")'
           url: '/Admin/Update',
           data: {
               id: value
           }
       })
       .done(function (response) {
           $("#Ajaxcontainer").html(response);
           focusAction("Ajaxcontainer");
       })
       .fail(function (XMLHttpRequest, textStatus, errorThrown) {
           alert("FAIL");
       });
   }

这是 HTML 链接:

<button type="button" class="btn btn-primary btn-sm" data-id="@item.ID" onclick="EditUser(@item.ID);">Edit</button>

您可以将参数传递给 Url.Action,例如:

Url.Action("Update", "Admin", new { id = id });

所以:

        $.ajax({
            url: '@Url.Action("Update", "Admin", new { id = 16})',
            //url: '/Admin/Update/16',
            contentType: "application/json",
            success: function (result) { 
                  //   your code here
            },
            error: function (xhr, resp, text) { console.log(xhr, resp, text); }
        });

这样,请求的 url 将是: http://localhost:61887/Adimn/Update/16

尽管,

        $.ajax({
            url: '/Admin/Update/',
            type: "GET",
            data: {
                "id":16
            },
            contentType: "application/json",
            success: function (result) { alert('success'); },
            error: function (result) { alert('Error'); }
        });

这样,请求的 url 将是: http://localhost:61887/Adimn/Update/?id=16

您之所以在 url ?id=16的末尾看到查询字符串,是因为默认情况下您通过 ajax 发送Get请求。 您可以决定在 ajax 调用中使用type: "POST",以避免查询字符串,而是将 model 数据捆绑并通过消息正文发送。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM