2010-01-23 40 views
1

我已中局部視圖以下Asp.net MVC 2:Ajax.ActionLink可以傳遞參數而不會進入url嗎?

<%= Ajax.ActionLink("Plunder Again", "Resources", new { controller = "Resource", parent = Model.ToJson() }, new AjaxOptions { UpdateTargetId = Model.ResourceType })%>

要在控制器方法:

public ViewResult Resources(/*ModelResource parent*/) 
    { 
     Debug.Assert(Request.Params["parent"]!=null); 
     var jss=new System.Web.Script.Serialization.JavaScriptSerializer(); 
     var parent=jss.Deserialize<ModelResource>(Request.Params["parent"]); 
     return View(parent.PlunderAmount); 
    } 

但它拋出異常,因爲JSON不正確地通過URL傳遞,它可以」找到'Type'參數。

我想簡單地具有ModelResource作爲參數來操作,但它來作爲null

如果以任何方式重要的這一行動也將返回一個局部視圖。

回答

0

ActionLink用於創建URL的錨點 - URL必須是有效的!一般來說,您不會將整個對象傳遞給Action,因爲路徑值必須被綁定回模型並傳遞給動作。您可以傳遞對象的ID,以便Action可以使用該鍵獲取對象。

0

如果你想發送模型代替控制器Ajax.ActionLink使用Ajax.BeginForm

+0

這樣我就可以發送數據,沒有它的URL會這樣? – Maslow 2010-01-24 18:31:50

+0

是的使用Ajax.BeginForm該頁面不回發,也不需要鏈接數據在場景後發送到服務器和迴應。 – ali62b 2010-01-24 19:08:20