5

私はドメイン「http://www.abc.com」を持っています。このドメインにASP.netMVC4アプリを展開しました。以下に示すように、RouteConfig.csでデフォルトルートも構成しました

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

上記のマッピングにより、「http://www.abc.com」にアクセスしようとすると、「http://www.abc.com/MyApp/Home」のページが自動的に表示されます。

すべてが期待どおりに機能しますが、ブラウザのアドレスバーに「http://www.abc.com/MyApp/Home」ではなく「http://www.abc.com」と表示されます。コントローラとアクションを含む完全なURLをブラウザに表示させる方法はありますか?

4

3 に答える 3

2

なんらかのURL書き換えを行う必要があります。おそらく最も簡単な方法は、Global.asaxのBeginRequestにRewritePath呼び出しを追加することです。あなたの場合、それは次のようになります:

void Application_BeginRequest(Object sender, EventArgs e)
{
    string originalPath = HttpContext.Current.Request.Path.ToLower();
    if (originalPath == "/") //Or whatever is equal to the blank path
        Context.RewritePath("/MyApp/Home");
}   

改善点は、置換のためにルートテーブルからURLを動的にプルすることです。または、 Microsoft URL Rewriteを使用することもできますが、それはより複雑なIMOです。

于 2012-10-30T02:53:11.743 に答える
2

1 つのオプションは、デフォルト ルートを新しいコントローラーに設定することです。おそらくBaseControllerアクションで呼び出されますRoot

public class BaseController : Controller
{
    public ActionResult Root()
    {
        return RedirectToAction("Home","MyApp");
    }
}

RouteConfigroot リクエスト用にそれを指すように変更します。

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Base", action = "Root", id = UrlParameter.Optional }
);
于 2012-10-30T12:59:08.023 に答える