1

私は途方に暮れています...これが私のルートです:

routes.MapRoute("LangOnly", "{language}",
    new { controller = "Home", action = "Root", language = "en" },
    new { language = @"en|ja" });

www.domain.com/enには一致しますが、www.domain.com/jaには一致しません

は?私は他のルートをコメントアウトすることさえしました...一種の立ち往生。;/

更新: Home コントローラーのルート アクションは次のとおりです。

[CompressFilter]
public ActionResult Root()
{
    if (!IsEnglish)
        return RedirectToAction("Index", "Biz", new { b = "" });

    return Request.IsAuthenticated ? View("LoggedInRoot") : View("Root");
}

次のように、OnActionExecuting のベース コントローラーで設定されているため、言語パラメーターは必要ありません。

    var l = (RouteData.Values["language"] != null) ? RouteData.Values["language"].ToString() : string.Empty;

    if (string.IsNullOrEmpty(l))
        l = "en";

    if (l.Contains("en"))
    {
        IsEnglish = true;
        l = "en";
    }
    else
    {
        IsEnglish = false;
        l = "ja";
    }

    ViewData["lang"] = l.ToLower();
    Language = l.ToLower();
4

1 に答える 1

1

あなたのルートで私にとって完璧に機能します。この簡単な構成を試してください。

routes.MapRoute("LangOnly", "{language}",
                new {controller = "Home", action = "Index", language = "en"},
                new {language = @"en|ja"});


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

そしてあなたの行動:

public ActionResult Index(string language)
{
.....

(ここではアクションとして "Index" を使用していますが、それが実際のアクション名である場合は、明らかに "Root" に変更してください。)

于 2009-07-25T09:37:08.793 に答える