Asp.net mvc ASP.NET MVC视图位置和路由
我有一个基本的控制器,我用它来返回这样的基本视图Asp.net mvc ASP.NET MVC视图位置和路由,asp.net-mvc,routing,asp.net-mvc-routing,Asp.net Mvc,Routing,Asp.net Mvc Routing,我有一个基本的控制器,我用它来返回这样的基本视图 public ActionResult Index(string pageName) { return View(pageName); } public ActionResult LanguageSpecific(string ul, string pageName) { var result = View("sv/" + pag
public ActionResult Index(string pageName)
{
return View(pageName);
}
public ActionResult LanguageSpecific(string ul, string pageName)
{
var result = View("sv/" + pageName);
return View(result.ViewName);
}
控制器的名称是home,有没有一种方法可以让它不在/home中查找sv内容,而只在/sv中查找
"EnglishRoute", // Route name
"{pageName}.aspx", // URL with parameters
new { controller = "Home", action = "Index", pageName = "" } // Parameter defaults
);
routes.MapRoute(
"SwedishRoute", // Route name
"{ul}/{pageName}.aspx", // URL with parameters
new { controller = "Home", action = "LanguageSpecific", ul = "",pageName = "" } // Parameter defaults
);
它在以下位置显示:
- ~/Views/Home/sv/index.aspx
- ~/Views/Home/sv/index.ascx
查看方法时,您可以传入以“~/”开头的应用程序相对路径,然后ASP.NET MVC将使用您指定的确切路径:
return View("~/UseExactlyThisFile.aspx");
这样,它就不会在预先配置的各种路径和位置中进行搜索
请记住,这与路由没有多大关系(虽然有一点关系)。如果您试图本地化页面,为什么不使用资源?使用上面的模式,您并没有真正利用mvc的优势。还是我误解了你?一个简单的解决方案是使用一个动作过滤器,它从路由中提取语言标识符并设置UICulture。然后,视图可以使用资源对其内容进行本地化