ここで説明されているように、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());
}
}
Test モデルは非常に基本的なものです。
public class TestModel
{
public string TheDate
{
get
{
return DateTime.Now.ToString();
}
}
}
「~/Views/Test」フォルダーには 2 つのビューがあります。
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機能をオーバーライドすることで手を汚すことを恐れていませんが、どこから始めればよいかわかりません。
どんな助けでも大歓迎です。