2013-05-15 85 views
0

說我有一個動作方法的字典參數發送到URL.Action()......如何在asp.net MVC3

public ActionResult DisplayXml(int viewId, Dictionary<string,string> parameter, string dataFormat) 
     { 
      string xml = ""; 
      return Content(xml, "text/xml"); 
     } 

,並鑑於我做了.... ...

<iframe title="Xml" class="ResultDisplay" 
     src = "@Url.Action("DisplayXml", "OutputData", new {viewId = Model.ViewId, parameter = Model.Parameter, dataFormat = Model.DataFormat })"> 
</iframe> 

這裏的參數是一個字典,我得到空。 我如何發送它?

+0

是'Model.Parameter'填充? –

回答

2

你想傳遞和任意字典作爲查詢字符串中的參數?

這是一個非常不尋常的要求,需要將字典的內容序列化爲查詢字符串參數並再次返回。當生成查詢字符串參數時,MVC將對這些值調用.ToString(),而對象僅使用默認實現(它返回它的類型)

由於此需求非常少見,要做到這一點..你可以很容易地將字典序列化爲一個字符串(也許是json?),然後將你的動作中的參數變量改爲字符串。之後你必須將值反序列化回字典。

之前我提供更多的例子,我要檢查你絕對相信這是你想要做什麼

更新:

這裏就是幹這個的方式(需要json.net ):

public ActionResult DisplayXml(int viewId, string parameterJson, string dataFormat) 
    { 
     var parameter = JsonConvert.DeserializeObject<Dictionary<string,string>>(parameterJson); 

     string xml = ""; 
     return Content(xml, "text/xml"); 
    } 

及用途:

<iframe title="Xml" class="ResultDisplay" 
     src = "@Url.Action("DisplayXml", "OutputData", new {viewId = Model.ViewId, parameterJson = Newtonsoft.Json.JsonConvert.SerializeObject(Model.Parameter), dataFormat = Model.DataFormat })"> 
</iframe> 
+0

謝謝,,,,,, 是的,我真的需要發送一個字典到我的行動。 如果可以,請舉個例子。 –

+0

感謝以下我沒有的基本信息:「當生成查詢字符串參數時,MVC將只調用.ToString()值」 – Veverke