0

説明すると、私の初期設定は次のとおりです。

コントローラ:
Library => Controllers => ParametersController.cs
Library => Controllers => ReaderLevelController.cs
Library => Controllers => ResourceTypeController.cs

ビュー:
Library => Views => Parameters => Index.cshtml
Library => Views => ReaderLevel => Index.cshtml
Library => Views => ResourceType => Index.cshtml

各ビューは、次のように適切なモデルを参照しました。
@model IEnumerable<Library.DAL.PrmTbl_Level>

そして、各コントローラーにはActionResultfor Index() が含まれていましたが、それ以外にはほとんど含まれFormCollectionsていませんでした。画面は正常に表示され、db をプル、編集、更新しても問題ありませんでした。

ビューをよりわかりやすい階層に変更したかったので、ビュー ファイルを次のように移動しました。

ビュー:
Library => Views => Parameters => Index.cshtml
Library => Views => Parameters => ReaderLevel => Index.cshtml
Library => Views => Parameters => ResourceType => Index.cshtml

ParametersController.cs次に、「親」ファイルである新しい ActionResults を反映するようにファイルを更新しました。

    public ActionResult ResourceType() { return View("ResourceType/Index"); }

ただし、foreach ループが関連するモデルを実行しようとするとエラーがスローされ、null として返されるため、新しい「サブ」画面 (この例では ReaderLevel と ResourceType) は表示されません。ビューファイルの場所を変更するとデータアクセスの実行可能性がどのように変化するかについて混乱しています(私の考えでは、モデルは@model IEnumerable<Library.DAL.PrmTbl_Level>変更されない ab パスを介して入力されます)。

ビューの場所を変更すると、コントローラーとモデルへのアクセスにどのように影響するかを誰かが説明できますか?

EDIT
私の現在のセットアップ(上記のファイル構造):

パラメータコントローラ

public ActionResult Index() {
    ViewBag.Title = "Parameters";
    return View();
}
public ActionResult ResourceType() {
    return RedirectToAction("ResourceType");
}

これで適切な URLが表示されますが、 「Firefox は、サーバーがこのアドレスへのリクエストを決して完了しない方法でリダイレクトしていることを検出しました。」RedirectToAction を使用"ResourceType","Index"すると URL '/Index/ResourceType' に解決され、リソースが見つかりません。

4

2 に答える 2

0

だから私はここで気づいているいくつかのこと:

  1. 上で示したアクション メソッドでは、Model を View に渡しているのではなく、単に View を呼び出しているだけです。ViewView を Model に渡すには、それをメソッドの 2 番目の引数として指定する必要がありますreturn View("ResourceType/Index", model);。また、ビューの名前だけでなく、Viewフルパスとファイル拡張子を指定する必要があるメソッドにパスを渡す場合、つまり~/Views/Parameters/ResourceType/Index.cshtml と思います。@Phil Sandler は、RedirectToAction別の Controller に関連付けられた View を返そうとしているので、同様に使用することについて良い点を指摘しました。

  2. デフォルトのビュー階層を変更したい場合は、 を拡張RazorViewEngineして新しいディレクトリで検索場所を補足することを検討する必要があります。例としてこの質問を見てください (使用してWebFormViewEngineいますが、Razor に対しても同じことを行います): ASP.NET MVC で「ビューを検索」するためのカスタムの場所を指定できますか?

  3. 最後に、あなたの新しいヒエラルキーがよくわかりません。ReaderLevelおよびResourceTypeビューがその Controller に属していないのに、 Parametersサブディレクトリの下に配置されるのはなぜですか? 新しい階層は実際にはより混乱しているように見えるため、後で理解するのが難しくなる可能性があります。あなたの決定を理解するためのすべての情報を持っていないかもしれませんが、それは奇妙に思えます.

于 2013-09-03T01:36:25.417 に答える