Ответов пока нет, поэтому я дам вам знать, что я сделал. К сожалению, механизм маршрутизации для ASP.NET MVC не самый лучший.
Вам нужно будет изменить соответствующие переменные в соответствии с маршрутизацией и представлениями, но это должно помочь вам начать.
Поместите это как последний маршрут, который вы отображаете:
routes.MapRoute("Root", "{pathName}", new
{
controller = "Root",
action = "Default"
});
А в вашем контроллере:
public class RootController : Controller
{
[HttpGet]
public ActionResult Default(string pathName)
{
// No pathName?
if (String.IsNullOrWhiteSpace(pathName)) {
return this.View("~/Views/Root/home.aspx")
}
// Check to see if there's a view for the pathName
var viewPath = String.Format("~/Views/Root/{0}.aspx", pathName);
if (File.Exists(Server.MapPath(viewPath))) {
return this.View(viewPath);
}
// Not found
this.Response.StatusCode = System.Net.HttpStatusCode.NotFound;
return this.View("~/Views/404.aspx");
}
}
Поэтому вам нужно будет назвать ваши взгляды в соответствии с ожидаемыми вами «pathNames»:
- ~ / Views / Root / national.aspx
- ~ / Views / Root / ab.aspx
- ~ / Views / Root / bc.aspx
Это не так уж плохо, если вы не возражаете против подобных соглашений.