如何在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>
这里的参数是一个字典,我得到空。 我如何发送它?
你想传递和任意字典作为查询字符串中的参数?
这是一个非常不寻常的要求,需要将字典的内容序列化为查询字符串参数并再次返回。当生成查询字符串参数时,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>
谢谢,,,,,, 是的,我真的需要发送一个字典到我的行动。 如果可以,请举个例子。 –
感谢以下我没有的基本信息:“当生成查询字符串参数时,MVC将只调用.ToString()值” – Veverke
是'Model.Parameter'填充? –