我想根據我塞在傳遞切換視圖......我可以確認的蛞蝓和邏輯是正確的,但我的觀點是沒有發現:MVC4(FixedRazorViewEngine)沒有找到我的看法
全球.asax.cs:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new DeviceCapableViewEngine());
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("mobile")
{
ContextCondition = Context => Context.Request.Browser["IsMobile"] == "True"
&& Context.Request.Browser["IsTablet"] == "False"
});
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("")
{
ContextCondition = Context => Context.Request.Browser["IsMobile"] == "False"
|| Context.Request.Browser["IsTablet"] == "True"
});
DeviceCapableViewEngine:
public class DeviceCapableViewEngine : FixedRazorViewEngine
{
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
ViewEngineResult result = null;
switch (ThemeContext.GetTheme())
{
case "Blue":
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, "blue"), masterName, useCache);
break;
case "Red":
result = base.FindView(controllerContext, string.Format("{0}.{1}", viewName, "red"), masterName, useCache);
break;
}
if (result == null || result.View == null)
result = base.FindView(controllerContext, viewName, masterName, useCache);
return result;
}
我有一個相當標準的設置,我可以證實, 「藍」 或 「紅色」 斷點被擊中。如果他們是我不希望MVC注入「.mobile」...而是我希望它是「viewName.red」...但它似乎與我的DDR,它總是會嘗試找到.mobile與基地呼叫,這是真的嗎?
無論如何它都會返回「viewName.mobile」。有什麼我做錯了嗎?
也許不相關,但:您是否檢查過有像「viewName.red.csthml」這樣的結果對應的文件?檢查結果的「SearchedLocations」以查看它是否看起來不在您期望的位置... –