如何使用Ajax从Asp.net View向Controller发送URL id?

时间:2016-09-24 07:48:37

标签: asp.net-mvc

我希望使用Ajax.i将数据从asp.net MVC View发送到我的控制器。可以从文本框将数据发送到控制器..问题是如何使用Ajax添加URL id以在Controller中发布数据。请参阅以下代码

我的网址

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 } };
    }

2 个答案:

答案 0 :(得分:0)

你可以尝试

project_id= <%=Url.RequestContext.RouteData.Values["id"]%>

但是请注意,如果您的Js在View中,它才能正常工作。 否则,您可以将其存储在ViewBag或某些javascript对象中......

答案 1 :(得分:0)

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

@Request.RequestContext.RouteData.Values["YOUR PROJECT ID PARAM"]

您将使用URL中的正确参数名称替换参数名称,例如URL路由中配置的ex:id。

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