将模型传递给j​​query ajax成功调用

时间:2013-08-20 11:28:47

标签: asp.net-mvc-3 jquery razor

我的Jquery Ajax调用。如何将模型从动作返回到ajax并传递给另一个动作。

    function ChangeName(id)
        {
        var name=$("#name").val();
          $.ajax({
                   cache:false,
                   url: "@Url.Action("EditName", "Order")",
                   data: "Name=" +name+"&Id="+id ,
                   type: "POST",
                   success: function (data) {
                     window.location.href=data.Url;//doesnt work passes null model

                                             }
                                             });
        }


    public ActionResult EditName(string name,int id)
    {
        var product= GetProduct(id);
        product.Name=name;
        UpdateProduct(product);

        var model=new ProdModel(){id=id};
        return Json(new
        {
            Url = Url.Action("Test","Order",new{model=model})
        },JsonRequestBehavior.AllowGet);
    }



 public ActionResult Test(ProdModel model)//Model null
        {

           return RedirectToAction("List", "Product");
        }

我试过这个但没有成功。

2 个答案:

答案 0 :(得分:0)

试试这个

function ChangeName(id)
    {
    var name=$("#name").val();
    var params = {
        Name: name,
        Id: id
    };
      $.ajax({
               cache:false,
               url: '@Url.Action("EditName", "Order")',
               data: JSON.stringify(params),
               type: "POST",
               success: function (data) {
                 window.location.href=data.Url;//doesnt work passes null model
               }
       });
    }


[HttpPost]
public ActionResult EditName(string name,int id)
{
    var product= GetProduct(id);
    product.Name=name;
    UpdateProduct(product);

    var model=new ProdModel(){id=id};
    return Json(new
    {
        Url = Url.Action("Test","Order",new{model=product})
    },JsonRequestBehavior.AllowGet);
}

答案 1 :(得分:0)

尝试以下

Edit Action尝试返回模型而不是网址

    public josnResult EditName(string name,int id)
{
    var product= GetProduct(id);
    product.Name=name;
    UpdateProduct(product);

    var model=new ProdModel(){id=id};
    return Json(model,JsonRequestBehavior.AllowGet);
}

然后在ajax成功通话中,您可以再次拨打Test Action

  $.ajax({
           cache:false,
           url: '@Url.Action("EditName", "Order")',
           data: JSON.stringify(params),
           type: "POST",
           success: function (data) {
             CallTestAction(data);
           }
   });
var CallTestAction = function(data) {
      $.ajax({
               cache:false,
               url: '@Url.Action("Test", "Order")',
               data: {model = data},
               type: "POST",
               success: function (data) {
               }
       });
};