Sprachspezifische Standard-URL unter Verwendung der MVC-Attribute Routing und RouteLocalization.mvc
Ich möchte in der Lage sein, eine prägnante sprachspezifische Standard-URL für meine Website zu erstellen, damit beim Navigieren zu:
somesite.com
Sie werden zu einer Sprachkultur-Seite weitergeleitet, wie zum Beispiel:
somesite.com / de-DE / somesite.com / sp-MX / somesite.com / fr-FR /Speziell, ichunterlassen Si wollen / Home / Index an die URLs angehängt:
somesite.com / de-DE / Home / Index somesite.com / sp-MX / Home / Index somesite.com / fr-FR / Home / IndexIch bin entschlossen, diese Website mit RouteLocalization.mvc zu erstellen.
Dresel / RouteLocalizationÜbersetzen Ihrer ASP.NET MVC-RoutenUnd ich würde gerne @ verwendMVC Attribut Routing soweit machbar.
Ich habe Probleme, herauszufinden, wie die Start () - Methode auf eine sprachkulturspezifische URL umgeleitet werden kann, ohne etwas wie "index" hinzuzufügen.
Beispiele von dem, was ich versucht habe, folgen:
using RouteLocalization.Mvc;
using RouteLocalization.Mvc.Extensions;
using RouteLocalization.Mvc.Setup;
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.Clear();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes(Localization.LocalizationDirectRouteProvider);
const string en = "en-us";
ISet<string> acceptedCultures = new HashSet<string>() { en, "de", "fr", "es", "it" };
routes.Localization(configuration =>
{
configuration.DefaultCulture = en;
configuration.AcceptedCultures = acceptedCultures;
configuration.AttributeRouteProcessing = AttributeRouteProcessing.AddAsNeutralAndDefaultCultureRoute;
configuration.AddCultureAsRoutePrefix = true;
configuration.AddTranslationToSimiliarUrls = true;
}).TranslateInitialAttributeRoutes().Translate(localization =>
{
localization.AddRoutesTranslation();
});
CultureSensitiveHttpModule.GetCultureFromHttpContextDelegate = Localization.DetectCultureFromBrowserUserLanguages(acceptedCultures, en);
var defaultCulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name;
routes.MapRoute(
name: "DefaultLocalized",
url: "{culture}/{controller}/{action}/{id}",
constraints: new { culture = @"(\w{2})|(\w{2}-\w{2})" },
defaults: new { culture = defaultCulture, controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Und meine Heimsteuerung:
public class HomeController : Controller
{
[HttpGet]
[Route]
public RedirectToRouteResult Start()
{
return RedirectToAction("Home", new { culture = Thread.CurrentThread.CurrentCulture.Name });
}
[Route("Index", Name = "Home.Index")]
public ActionResult Index()
{
return View();
}
public ActionResult Contact()
{
return View();
}
public ActionResult About()
{
return View();
}
}
Meine Global.asax-Datei:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
AreaRegistration.RegisterAllAreas();
}
}