2

ログインページの画像(クリック可能な画像):http://i.snag.gy/sHPyQ.jpg

それは(デバッグビューアーですが)、ViewEngines両方(かみそり+ Webフォーム、最初のものを使用しています)がViewEnginesコレクション内にあり、両方ともビューを(手動で)見つけて表示でき、手動で試しました。

では、なぜ彼らは自分でそれを行うことができないのでしょうか? これは単なるアクション メソッドであり、それ以上のものではありません。

public ViewResult Login()
{
    return View();
}

メジャーアップデート

メソッドをオーバーライドしましたOnResultExecuting

protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
    if (filterContext.Result is ViewResult)
    {
        if (((ViewResult)filterContext.Result).ViewEngineCollection.Count == 0)
        {
            ((ViewResult)filterContext.Result).ViewEngineCollection.Add(new RazorViewEngine());
        }
    }

    base.OnResultExecuting(filterContext);
}

そして、毎回、すべてのビューを a に new を追加する必要があることがわかりIViewEngineましたViewResult。ではなぜそうなのか?ViewEngines.Enginesコレクションが空でなくても?

マイナーアップデート。

アイドリングViewEngineCollectionのある時点で空になるのをやめました。

4

3 に答える 3

1

マスターページが定義されていますか?

ソリューションのルートに _ViewStart.chstml ファイルがある場合、エンジンがマスター ページを読み込んでビューと結合しようとしている可能性があります。

マスター ページをスキップするには、マスター ページを使用しないようにビューに指示します。以下をビューに追加します

@{
    Layout = null;
}

または、_viewStart.cshtml ファイルで参照されているマスター ページが存在することを確認してください。

于 2013-09-12T14:56:35.637 に答える
0

正しくViewEngines構成されていない (または構成されていない) 可能性があります。

ビュー エンジンに手動で追加して、構成エラーがどこかにあるかどうかを特定してみてください。

Application_Start()のメソッドにこのようなものを追加しGlobal.asaxます。

protected void Application_Start()
{
   ViewEngines.Engines.Clear();
   ViewEngines.Engines.Add(new RazorViewEngine());
   // Other code
}

これにより、Razor ビュー エンジンが初期化されます。その結果、mvc が場所の検索を開始した場合は、何らかの理由で構成で razor がオフになっています。

于 2013-09-12T11:41:53.427 に答える