2012-02-23 100 views
4

我試圖返回從既有的查詢字符串和型號的控制器,查看與模型和查詢字符串

return View("BillingReport.aspx/?report=" + fc["report_selector"], bilDet); 

,但是這給了我頁面的運行時錯誤沒有發現,因爲它附加的.aspx等返回視圖在網址的結尾處。

RedirectToAction() does not have a option to do it。
有沒有辦法做到這一點或不MVC3限制我們使用一個查詢字符串或模型

回答

2

MVC不支持你在找什麼,

但我不明白你爲什麼要使用ModelValues重定向到一個URL。

任何重定向都是GET請求,因此您可以構建模型並從該操作返回視圖。

View()需要一個與之相關的視圖名稱和模型。

Redirect()或RedirectToAction()用於將URL重定向到另一個控制器/操作。所以你不能傳遞一個模型。即使你試圖傳遞模型,它也會將模型屬性作爲查詢字符串參數追加。

0

我同意瑪納斯的回答,如果我是你,我會考慮在可能的情況下更改設計。
作爲一個側面說明,以下技術是可能的:

TempData["bilDet"] = bilDet; 
return RedirectToAction(....); // your controller, action etc. 

在行動,那麼你可以檢索你的TempData。 TempData將被自動刪除。

但還檢查了:ASP.NET MVC - TempData - Good or bad practice

1

這是一個原因,你會想用模型和查詢字符串:查詢字符串允許你給用戶的方式來保存狀態信息的URL。該模型允許您傳遞大量非平坦數據。所以這裏是我想如何在MVC 5中做到這一點(可能不適用於舊版本,但可能不會):

對視圖使用2個操作而不是1個。使用第一個通過RedirectToAction設置查詢字符串。使用第二個操作將模型返回到視圖。你通過會話狀態將模型從第一個動作傳遞給第二個動作。以下是示例代碼:

public ActionResult Index(string email){ 
    Session["stuff"]=Load(email); 
    return RedirectToAction("View1action", new { email = email, color = "red" }); 
} 

public ActionResult View1action(string email){ 
    return View("View1",(StuffClass)Session["stuff"]); 
}