我已經設置了顯示模式在應用程序啓動事件作爲ASP.NET MVC 4種精確視圖名稱移動顯示模式
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone"){
ContextCondition = (context =>
context.GetOverriddenUserAgent().IndexOf(
"iPhone",
StringComparison.OrdinalIgnoreCase) >= 0) });
然後在控制器我有返回查看,我指定視圖名稱:
返回查看( 「〜/查看/普通/用戶/ Login.cshtml」,視圖模型);
如果我訪問的頁面從iPhone將直接進入登錄查看
如果我不指定視圖名稱:
return View(viewModel);
在這種情況下,從iPhone我看看Login.iPhone.cshtml
問題:是否可以指定視圖的名稱,但是一些DisplayModeProvider如何選擇普通或iPhone版本n的cshtml文件?
還沒有嘗試過MVC4,但你有沒有試過指定視圖的完整路徑,而只是視圖名稱。 '返回View(「Login」,viewModel);'使用MVC3和啓用移動設備的視圖引擎,它將爲移動設備選擇'Login.Mobile.cshtml'視圖,爲非移動設備選擇'Login.cshtml'視圖。 – tvanfosson 2012-03-09 03:41:18
不幸的是,我們有一些特殊路徑的意見,所以我們需要提供絕對路徑。所以默認viewName(基於操作)和共享文件夾中視圖的名稱是可以的,但絕對路徑不是。 – Maxim 2012-03-09 19:38:19