這很正常。重定向時,您無法在URL中傳遞複雜對象,這就是爲什麼沒有收到MessageUi
對象的原因。只有標量屬性將被轉換爲&
- url中的分隔鍵/值對。
一種可能是通過這個對象的所有簡單的屬性,以便在默認模式粘結劑可以在目標位置重建它:
var id = "someidvalue"
var message = new MessageUi("somevalue");
return RedirectToAction("Details", "Identity", new {
id = id,
MessageProp1 = message.MessageProp1,
MessageProp2 = message.MessageProp2,
MessageProp3 = message.MessageProp3,
});
你也可以只傳遞消息ID:
var id = "someidvalue";
return RedirectToAction("Details", "Identity", new {
id = id,
messageId = "somevalue"
});
並且使用t中的細節動作重構消息對象他的ID:
public ActionResult Details(string id, string messageId)
{
var message = new MessageUi(messageId);
...
}
和這項工作可以通過爲MessageUi
類型的定製模型綁定大大完成。
另一種可能性是使用TempData
或Session
:
var id = "someidvalue";
TempData["message"] = new MessageUi("somevalue");
return RedirectToAction("Details", "Identity", new { id });
,然後詳細的行動中:
var message = TempData["message"] as MessageUi;
自定義的模型綁定解決了,謝謝! – 2011-02-24 16:39:27