如何在asp.net MVC3

问题描述:

说我有一个动作方法的字典参数发送到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'填充? –

你想传递和任意字典作为查询字符串中的参数?

这是一个非常不寻常的要求,需要将字典的内容序列化为查询字符串参数并再次返回。当生成查询字符串参数时,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