我正在使用ASP.NET MVC 4(RC)視圖的自定義DisplayModes來允許自定義視圖內容。爲什麼ViewContext.DisplayMode.DisplayModeId爲空?
我給這家移動唯一的應用程序規則非常簡單,定義了基於用戶的內部輪廓/會話配置:
DisplayModeProvider.Instance.Modes.Insert(0,
new DefaultDisplayMode("Tablet")
{
ContextCondition = (context =>
{
if (SessionManager.Current == null)
return false; // assume phone initially
if (SessionManager.Current.Session.ScreenWidth > 600)
return true;
return false;
})
});
DisplayModeProvider.Instance.Modes.Insert(0,
new DefaultDisplayMode("Phone")
{
ContextCondition = (context =>
{
if (SessionManager.Current == null ||
SessionManager.Current.Session.ScreenWidth <= 600)
return true; // assume phone initially
return false;
})
});
我現在可以創建使用xxxx.Phone.cshtml和xxxx.Tablet意見。 CSHTML。呈現正確的視圖。
但是,ViewContext.DisplayMode.DisplayModeId總是回到空白。例如,在下面的頁面我回顯的顯示模式和硬編碼的ID,告訴其觀點被渲染:
<div>@Model.Distance - @ViewContext.DisplayMode.DisplayModeId - Tablet</div>
我看到硬編碼的平板電腦(或手機)的值,但DisplayModeId始終是空白。
應該設置這個值嗎?我認爲這在以前的MVC 4測試版中有效,但我不是100%確定的。
任何想法?
做了一些更多的測試。因此無法確認其與最新的MVC4版本。工作是否像預期的那樣。我可以確認的是,第一個帶ContextCondition = null的DisplayMode被返回,獨立於其他。 – EricSch