我正在尝试在 ASP.NET MVC 应用程序中实现设备特定视图,如下所述: https ://www.simple-talk.com/dotnet/asp-net/multiple-views-and-displaymode-providers- in-asp-net-mvc-4/ 或此处: https ://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/aspnet-mvc-4-mobile-features
尽管上面的文章是针对 ASP.NET MVC4 的,但它们的内容与框架的更高版本相关(我的应用程序使用的是 ASP.NET MVC 5.2)。
我偶然发现了一个问题。我有以下控制器:
public class TestController: Controller
{
public ActionResult Test()
{
return View(new TestModel());
}
public ActionResult Test2()
{
return View("~/Views/Test/Test.cshtml", new TestModel());
}
}
测试模型非常基础:
public class TestModel
{
public string TheDate
{
get
{
return DateTime.Now.ToString();
}
}
}
我在“~/Views/Test”文件夹中有两个视图:
测试.cshtml
@model MyNamespace.Models.TestModel
<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<h1>This is the desktop view</h1>
<p>model data: @Model.TheDate</p>
</body>
</html>
Test.Mobile.cshtml
@model MyNamespace.Models.TestModel
<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<h1>This is the mobile view</h1>
<p>model data: @Model.TheDate</p>
</body>
</html>
我已经实现了上面链接中描述的解决方案。
当请求 /test/test 时,我得到了正确的视图(通过桌面浏览器请求时为 Test.cshtml,从移动模拟器请求时为 Test.Mobile.cshtml)。但是,当要求 /test/test2 时,我总是得到桌面视图。
我已经为我的问题寻找解决方案,但似乎每个人都在一遍又一遍地重现相同的场景(即“/test/test”场景),似乎没有人尝试过“/test/test2”场景. 甚至可以覆盖该功能吗?我不怕用压倒一切的默认剃须刀/MVC 功能弄脏我的手,但我真的不知道从哪里开始。
任何帮助表示赞赏。