如何在 mvc .net Web 应用程序中从 jquery(在自定义视图页面中)调用控制器后操作

5 asp.net ajax

我正在使用 .net mvc 和 jquery 创建一个用于事件管理的 Web 应用程序。我创建了一个 mvc web app.contollerSeatPlansController并命名为模型SeatPlanes,并且我能够将数据插入数据库。但我无法使用 mvc 控制器将数据从 jquery 传递到数据库。

我的控制器操作代码如下所示

    // GET:座位计划/创建
    公共 ActionResult 创建()
    {
        返回视图();
    }

    // POST:座位计划/创建
    // 为了防止过度发布攻击,请启用您想要绑定的特定属性,例如
    // 更多详细信息请参阅 http://go.microsoft.com/fwlink/?LinkId=317598。
    [http邮报]
    [验证防伪令牌]

 公共 ActionResult 创建(字符串 Seat_id,字符串 Seat_no)
        {
            整数 ID = 10;
            SeatPlans S = new SeatPlans();
            S.seat_id = 座位_id;
            S.seat_no = 座位号;
            if (ModelState.IsValid)
            {


                db.SEATPLAN.Add(S);
                db.SaveChanges();
              // 返回 RedirectToAction("Index");
            }

            返回视图(S);
        }


   

在创建后控制器 Id 是主键,所以我想传递seat_id,seat_no作为参数,它应该更新数据库。

我使用了以下 JavaScript

function getPerson(id) {

    $.ajax({
        type: "GET",
        url: '@Url.Action("create", "SeatPlanesController")',
        contentType: "application/json; charset=utf-8",
        data: {eat_id :6, seat_no:8},
        dataType: "json",
        success: function (result) {
            alert(result);
            //window.locationre = result.url;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令运行 create get 方法

http://localhost:52348/SeatPlans/Create
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能直接从浏览器运行 post 方法并带有类似的参数

http://localhost:52348/SeatPlans/Create/2/3t/e
Run Code Online (Sandbox Code Playgroud)

我已经更改了脚本,如下所示,它适用于 GET 方法,但如果我输入 TYPE:"post",它会弹出一个警报框,其中包含警报“localhost:52348 说:内部服务器错误”




     $(文档).ready(函数() {
            $("按钮").click(函数() {
                $.ajax({
                    类型:“帖子”,
                    contentType: "application/json; charset=utf-8",
                    url: '@Url.Action("创建", "SeatPlans", new { Area = "" })',
                    数据:{ 座位号:“34”,座位号:“98” },
                    数据类型:“json”,
                    异步:假,
                    成功:函数(结果){
                        $("#div1").html(结果);
                    },

                    错误:函数(abc){
                    警报(abc.statusText);
                    },



                });
            });
        });




小智 1

最后我得到了解决方案,我改变了脚本如下

        //jQuery.noConflict();
      // var $j = jQuery.noConflict();

        函数点击事件()
        {
            var 形式 = $("#frm");
            var token = $('input[name="__RequestVerificationToken"]', form).val();
                $.ajax({
                    类型:“帖子”,
                  // headers: { "__RequestVerificationToken": token },
                    url: '@Url.Action("创建", "座位计划")',
                    数据: {
                        座位号:“34”,座位号:“98”
                    },
                    成功:函数(结果){


                            $("#div1").html(结果);

                    }
                });
            }



并更改创建帖子方法如下

<pre>


    public ActionResult Create(String seat_id, String seat_no)
    {
        int id = 10;
        SeatPlans S = new SeatPlans();
        S.seat_id = seat_id;
        S.seat_no = seat_no;
        if (ModelState.IsValid)
        {


            db.SEATPLAN.Add(S);
            db.SaveChanges();
          //  return RedirectToAction("Index");
        }

        return View(S);
    }
Run Code Online (Sandbox Code Playgroud)