我想這是一個我們都知道的普遍模式。我們有一個顯示錶單的動作。該表格是指向另一個行動。根據驗證,我們重新定向或再次顯示無效表單。令人討厭的是當表單頁面需要一堆放置在ViewData中的變量時(有些可能是複雜的數據)。這要求在兩個操作中複製代碼。爲表單頁面設置ViewData變量的最佳方法?
你如何解決這個重複?一個例子可能是一個動作過濾器,以確保設置一些變量,但爲每個案例定義一個新的過濾器有點矯枉過正......或者一個InitAction方法?對此有最佳做法嗎?
public ActionResult EditSettings()
{
// Set some various variables for the view
ViewData["timezoneinfos"] = TimeZoneInfos;
ViewData["emailtemplates"] = Templates;
// Fill a SettingsForm object
return View(form);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditSettings(SettingsForm form)
{
if (ModelState.IsValid)
{
// TODO: save model
return RedirectToRoute(....);
}
// Set some various variables for the view (again)
ViewData["timezoneinfos"] = TimeZoneInfos;
ViewData["emailtemplates"] = Templates;
return View(form);
}
不知道我得到的問題是正確的。在我看來,你想初始化你的viewdatadictionary與一些初始值?爲什麼不創建一個強類型的viewdata在構造函數中做到這一點?或者,創建一個GetViewData()方法,爲您進行初始化。 – 2010-12-09 23:25:48