[英]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.