Asp.net 如何在post操作中获取url“controller/action/ID”中的{ID}?

Asp.net 如何在post操作中获取url“controller/action/ID”中的{ID}?,asp.net,asp.net-mvc,asp.net-mvc-5,Asp.net,Asp.net Mvc,Asp.net Mvc 5,在cshtml文件中,我在Home/Details/4中有以下javascript。4是身份证 <script> $(document).ready(function () { $("#checkbox").click(function () { $.post( "Home/Toggle", { checkbox: $("#checkbox").val() },

在cshtml文件中,我在Home/Details/4中有以下javascript。4是身份证

<script>
    $(document).ready(function () {
        $("#checkbox").click(function () {
            $.post(
                "Home/Toggle", 
                { checkbox: $("#checkbox").val() }, 
                function (data) {

            });
        });
    });
</script>
如何取得身份证?从一些路由数据,或Url,还是让前面的jQuery发布传递


是否可以从action方法中获取ID而无需从首页html页面传递?

如果您的url是this Home/Details/4,则您可以通过以下方式获取“ID”:-


您需要在ajax post函数中更改going to id,并将id添加到Toggle函数中,或者使用id作为参数添加新的Toggle函数。
如果要在post函数中保持值不变,则需要在脚本中添加一个新路由,分配id

var id = '@Model.ID';
然后在发回时包含它

$.post("Home/Toggle", { checkbox: $("#checkbox").val(), ID: id }, function (data) { ...
并将您的post方法调整为

public ActionResult Toggle(int ID, bool checkbox)
{
  ....

这完全取决于你的html是什么样子的?您可能希望将id保存为html元素上的隐藏数据或某个名称

@Html.HiddenFor(Model => Model.NameId)

你的帖子应该是这样的。注意,这是在使用隐藏输入存储方法时发生的

$.post("Home/Toggle", { checkbox: $("#checkbox").val(), id: $('.NameId').val() }, function (data) {

});

首先,url中缺少控制器名称前的斜杠:

"/Home/Toggle"
下一个错误是无法使用val方法检查复选框值,但可以使用以下方法检查复选框值:

$("#checkbox").is(':checked')
接下来,您必须在url之后添加id,就像registerOutes方法中RouteConfig.cs文件中的controller/action/{id}一样

因此,您的最终正确url将是:

"/Home/Toggle/{id}"  //in your case: "/Home/Toggle/4"
也缺少正在运行的方法id参数。纠正措施为:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public void Toggle(bool checkbox, int id)
    {

    }
您完整且正确的Jquery代码是:

$.post("/Home/Toggle/4", { checkbox: $("#checkbox").is(':checked') }, function (data) {

            });

我认为这是你想要的,如果你需要更多的帮助,然后再评论…不清楚bool在你的行动中做了什么?您使用的路径是/Controller/Action/Id,应该是/Controller/Action/Bool/Id吗?我是说你想传递这两个值?-1。多解释一下你的情况。您的html中是否有和Id。为什么不想用jquery传递它?如果您的意思是如何传递id=4,那么您应该在post函数中的复选框后添加id:4。是否可以从操作方法中获取id而不从前面的html页面传递?除非您的应用程序处于较低的http协议级别,否则可以在REFERE中找到id。@dc7a9163d9,如果客户端从未发送id,服务器如何读取它?
$("#checkbox").is(':checked')
"/Home/Toggle/{id}"  //in your case: "/Home/Toggle/4"
    [HttpPost]
    [ValidateAntiForgeryToken]
    public void Toggle(bool checkbox, int id)
    {

    }
$.post("/Home/Toggle/4", { checkbox: $("#checkbox").is(':checked') }, function (data) {

            });