2013-08-20 34 views
0

我的jQuery Ajax調用。如何將模型從動作返回到ajax並傳遞給另一個動作。將模型傳遞給j​​query 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"); 
     } 

我試過這個,但沒有得到成功。

+0

當'Test'行爲期待'OrderModel'時,Your're正在傳遞'ProdModel'。 – haim770

+0

@ haim770更正! –

回答

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); 
} 
+0

不,我想成功地通過模型調用jqery ajax –

+0

@Nitinvarpe檢查我的答案 – Amit

+0

調用changename方法沒有問題,我已經返回在json數據中的url與模型作爲參數。現在成功,我想調用其他方法與該模型作爲參數,在我的情況下,如果你的第一個定義的問題已經解決,然後問另一個問題,在我的情況下,將null –

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); 
} 
在阿賈克斯成功

然後調用您可以撥打另一個電話到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) { 
       } 
     }); 
}; 
相關問題