0

ここで説明されているように、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機能をオーバーライドすることで手を汚すことを恐れていませんが、どこから始めればよいかわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1