Asp.net mvc 如何使用Ajax将URL id从Asp.net视图发送到控制器?

Asp.net mvc 如何使用Ajax将URL id从Asp.net视图发送到控制器?,asp.net-mvc,Asp.net Mvc,我想使用Ajax将数据从asp.net MVC视图发送到我的控制器。我可以从文本框将数据发送到控制器。。问题是如何使用Ajax将URL id添加到控制器中的post数据中。请参阅下面的代码 我的URL http://localhost:20487/MyController/MyMethod/1 我的脚本 //Save if valid if (isAllValid) { var data = { /

我想使用Ajax将数据从asp.net MVC视图发送到我的控制器。我可以从文本框将数据发送到控制器。。问题是如何使用Ajax将URL id添加到控制器中的post数据中。请参阅下面的代码

我的URL

http://localhost:20487/MyController/MyMethod/1
我的脚本

//Save if valid
            if (isAllValid) {
                var data = {
                    //project_id: $('#project_id').val().trim(),
                    project_id= *I want get the ID from Above URL*
                    title: $('#title').val().trim(),
                    description : $('#description').val().trim(),
                    ProjComponentActivities: componentActivities
                }

                $(this).val('Please wait...');

                $.ajax({
                    url: '/ProjectComponent/SaveComponent',
                    type: "POST",
                    data: JSON.stringify(data),
                    dataType: "JSON",
                    contentType: "application/json",
                    success: function (d) {
                        //check is successfully save to database 
                        if (d.status == true) {
                            //will send status from server side
                            alert('Successfully done.');
                            //clear form
                            componentActivities = [];
                            //$('#project_id').val('');
                            $('#title').val('');
                            $('#componentActivities').empty();
                        }
                        else {
                            alert('Failed');
                        }
                        $('#submit').val('Save');
                    },
                    error: function () {
                        alert('Error. Please try again.');
                        $('#submit').val('Save');
                    }
                });
            }

        });
我的方法

[HttpPost]
    public JsonResult SaveComponent(OrderVM O)
    {

        bool status = false;
        if (ModelState.IsValid)
        {
            using (Entities db = new Entities())
            {
                ProjComponent ProjComponent = new ProjComponent { project_id = O.project_id, title = O.title, description = O.description };
                foreach (var i in O.ProjComponentActivities)
                {
                    ProjComponent.ProjComponentActivity.Add(i);
                }
                db.ProjComponents.Add(ProjComponent);
                db.SaveChanges();
                status = true;
            }
        }
        else
        {
            status = false;
        }
        return new JsonResult { Data = new { status = status } };
    }
你可以试试

project\u id=

但是请注意,只有当您的Js在视图中时,它才起作用。
否则,您可以将其存储在ViewBag或某个javascript对象中…

如果您只想获取projectId参数,只需将以下代码附加到javascript代码中即可:

@Request.RequestContext.RouteData.Values["YOUR PROJECT ID PARAM"]
您将使用URL中正确的参数名称替换参数名称,例如:URL路由中配置的id


另一种方法是使用同一行代码填充隐藏字段值,然后直接在JavaScript方法中使用此值

我在方法中添加了methode code我需要从URL发布项目id值。MyMethod====public JsonResult SaveComponent(OrderVM O)我将数据发布到此方法,实际上,方法MyMethod不存在,我以该URL为例。如何将其附加到内部,而不是项目id-->var data={//project id:$('.'项目id').val().trim(),title:$('.'标题').val().trim(),description:$('.'描述').val().trim(),ProjComponentActivities:componentActivities}project_id=“@Request.RequestContext.RouteData.Values[“您的项目id参数”]”;