107

asp.net MVCでは、「ホームページ」(つまり、www.foo.comにアクセスしたときに表示されるルート)がHome/Indexに設定されています。

  • この値はどこに保存されますか?
  • 「ホームページ」を変更するにはどうすればよいですか?
  • ホームコントローラーのインデックスアクションでRedirectToRoute()を使用するよりもエレガントなものはありますか?

プロジェクトでホーム/インデックスをgrepしようとしましたが、参照が見つかりませんでした。また、IISで何も表示されませんでした(6)。ルートのdefault.aspxページを見ましたが、それは何の関係もないようでした。

ありがとう

4

8 に答える 8

156

Default.aspx/Default.aspx.csおよびGlobal.asax.csを見てください

デフォルトルートを設定できます。

        routes.MapRoute(
            "Default", // Route name
            "",        // URL with parameters
            new { controller = "Home", action = "Index"}  // Parameter defaults
        );

コントローラ/アクション名を希望のデフォルトに変更するだけです。これがルーティングテーブルの最後のルートになります。

于 2009-07-17T08:27:30.080 に答える
25

ASP.NETCore

ルーティングは、クラスのConfigureメソッドで構成されます。Startup「ホームページ」を設定するには、以下を追加するだけです。これにより、ユーザーがサイトのベースURLに移動した場合、つまりyoursite.comがユーザーをyoursite.com/foo/indexにルーティングする場合、ユーザーはMapRouteメソッドで定義されたコントローラーとアクションにルーティングされます。

app.UseMvc(routes =>
{
   routes.MapRoute(
   name: "default",
   template: "{controller=FooController}/{action=Index}/{id?}");
});

以前のASP.NETCore

以下に示すように、App_Start / RouteConfig.cs(MVC 3および4)またはGlobal.asax.cs(MVC 1および2)のいずれかにあるRegisterRoutesメソッドを使用します。これにより、ユーザーがサイトのベースURLに移動した場合、ユーザーはMapRouteメソッドで定義されたコントローラーとアクションにルーティングされます。つまり、yoursite.comはユーザーをyoursite.com/foo/indexにルーティングします。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    // Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller.
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional }
    );
}
于 2014-04-26T18:05:13.140 に答える
5

ステップ1:ソリューションでGlobal.asaxファイルをクリックします。

ステップ2:次に、の定義に進みます

RouteConfig.RegisterRoutes(RouteTable.Routes);

手順3:コントローラー名とビュー名を変更する

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(name: "Default",
                        url: "{controller}/{action}/{id}",
                        defaults: new { controller = "Home", 
                                        action = "Index", 
                                        id = UrlParameter.Optional }
                        );
    }
}
于 2016-08-07T16:05:57.073 に答える
4
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",               
            defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional }
        );
    }
}
于 2015-07-28T09:34:24.883 に答える
4

MVC5での属性ルーティング

routes.MapRoute(...)MVC 5より前では、RouteConfig.csファイルを呼び出すことで、URLを特定のアクションとコントローラーにマップできました。これは、ホームページのURLが保存される場所です(Home/Index)。ただし、以下に示すようにデフォルトルートを変更すると、

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

これは他のアクションやコントローラーのURLに影響することに注意してください。たとえば、という名前のコントローラークラスがExampleControllerあり、その中にアクションメソッドが呼び出された場合、デフォルトルートが変更されたためDoSomething、期待されるデフォルトURLExampleController/DoSomethingは機能しなくなります。

この回避策は、デフォルトルートを台無しにせず、RouteConfig.csファイルに他のアクションやコントローラー用の新しいルートを作成することです。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
    name: "Example",
    url: "hey/now",
    defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);

これDoSomethingで、クラスのアクションがExampleControllerurlにマップされhey/nowます。ただし、これは、さまざまなアクションのルートを定義するたびに行うのが面倒になる可能性があります。そのため、MVC 5では、URLを次のようなアクションに一致させる属性を追加できるようになりました。

public class HomeController : Controller
{
    // url is now 'index/' instead of 'home/index'
    [Route("index")]
    public ActionResult Index()
    {
        return View();
    }
    // url is now 'create/new' instead of 'home/create'
    [Route("create/new")]
    public ActionResult Create()
    {
        return View();
    }
}
于 2017-06-05T14:26:21.563 に答える
3

global.asax.csのRegisterRoutesメソッドを確認してください-ルート構成のデフォルトの場所です...

于 2009-07-17T08:26:17.163 に答える
1

私は答えを試しましたが、うまくいきませんでした。これは私がやったことです:

新しいコントローラーDefaultControllerを作成します。インデックスアクションでは、1行のリダイレクトを記述しました。

return Redirect("~/Default.aspx")

RouteConfig.csで、ルートのcontroller="Default"を変更します。

 routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }
        );
于 2016-07-02T01:43:04.730 に答える
0

ルーターを変更したくない場合は、HomeControllerに移動し、インデックスのMyNewViewHereを次のように変更します。

    public ActionResult Index()
    {
        return View("MyNewViewHere");
    }
于 2019-04-16T03:26:26.223 に答える