[英]MVC5 automatically split IEnumerable<primitive> Parameters
假设我有一个带有以下签名的动作:
public ActionResult SomeAction(IEnumerable<string> myList){ .. }
和另一个动作:
public ActionResult AnotherAction() {
var myListEntries = LoadFromSomewhere().ToList<string>();
return RedirectToAction("SomeAction", new { myList = String.Join(";", MyListEntries) });
}
有什么方法可以告诉第一个操作,它必须对传入的值应用分隔符? 还是我必须使用TempData []或(在HTML中)多个输入字段?
所以打电话
return RedirectToAction("SomeAction", new { myList = myListEntries });
不起作用,因为结果是您的操作将收到一个包含一个条目的列表,其中包含您将从myList.ToString()
获得的内容, myList.ToString()
内容仅返回类型名称,这是非常无用的。
因此,正如您已经猜到的那样,您必须插入某种字符串表示形式,MVC可以将其自动转换回列表对象。 要接收此消息,您不应使用String.Join()
,但可以尝试JSON:
return RedirectToAction("SomeAction", new { myList = JsonConvert.SerializeObject(myList) });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.