269

別のコントローラーからビューを表示することは可能ですか?

たとえば、ビューがあるCategoriesControllerとしCategory/NotFound.aspxます。にいる間CategoriesController、私は簡単に戻ることができますView("NotFound")

ここProductsControllerで、製品を追加するアクションとビューがあるとします。ただし、このアクションには、製品を追加するカテゴリが必要です。たとえば、Products/Add/?catid=10.

に基づいてカテゴリを見つけることができない場合は、Products コントローラーの下にビューを作成するのではなく、Categories コントローラーからビューcatidを表示したいと考えています。NotFoundCategoryNotFound

これは可能ですか、それとも間違った方法で構造化していますか? これを行う良い方法はありますか?

4

7 に答える 7

310

はい。デフォルトでは、ASP.NET MVC は最初に をチェックインします\Views\[Controller_Dir]\が、その後、ビューが見つからない場合は をチェックインし\Views\Sharedます。

共有ディレクトリは、特に複数のコントローラー間でビューを共有するためにあります。View を Shared サブディレクトリに追加するだけで準備完了です。

もしそうなら、return View("~/Views/Wherever/SomeDir/MyView.aspx")好きなビューを返すことができます。

于 2009-05-18T21:12:11.723 に答える
170

以下を使用できます。

return View("../Category/NotFound", model);

ASP.NET MVC 3 でテストされましたが、ASP.NET MVC 2 でも動作するはずです。

于 2010-12-05T11:33:14.183 に答える
68

はい、可能です。RedirectToAction()次のようなメソッドを返します。

return RedirectToAction("ActionOrViewName", "ControllerName");
于 2014-08-28T07:57:01.447 に答える
35

試しましたRedirectToActionか?

于 2012-02-24T17:41:27.087 に答える
24

はい、できます。次のようなアクションを返します。

return RedirectToAction("View", "Name of Controller");

例:

return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");

このアプローチは GET メソッドを呼び出します

また、次のようにアクションに値を渡すこともできます。

return RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" });
于 2015-04-16T02:44:04.993 に答える
5

JavaScript / jQueryから任意のコントローラーを呼び出すこともできます。404またはその他のユーザーコントロール/ページを返すコントローラーがあるとします。次に、アクションで、クライアントコードから、コントローラーを起動して結果をHTML形式で返すアドレスを呼び出すことができます。クライアントコードは、この返された結果を取得して、ページ内の任意の場所に配置できます...

于 2009-05-20T14:43:03.343 に答える