routes.MapRoute(
"Default",
"{controller}/{action}.shtml",
new { controller = "Movie", action = "Index", id = "" }
);
这样设置后。访问初始页Movie就会报错?
我也研究过,在view里用
public string RouteUrl(string routeName, object routeValues);
public string RouteUrl(string routeName, RouteValueDictionary routeValues);
和
public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, object routeValues);
public static MvcHtmlString RouteLink(this HtmlHelper htmlHelper, string linkText, string routeName, RouteValueDictionary routeValues);
等重载方法能解决这个问题,但是用起来挺麻烦的~
或者你可以重写一些方法来达到你想要的效果,比如routeName可以用lambda之类的
谢谢你的回答 ,可是没怎么看懂。能说的再详细点么?这个问题你解决了么?可否把代码贴出来。
@AStronghcm:
@URL.RouteUrl
@Html.RouteLink
如果你这样写,则必须是Movie/Index.shtml的形式访问
对。。但我通过怎样配置?运行的时候url自动显示出来Movie/Index.shtml,不是手动去敲
你可以专门给Movie/Index.shtml 来一个controller 直接默认 这个一个控制器就OK
怎么弄。可否把代码贴出来。初学者。谢谢哈。这个问题困扰我好几天了。
@AStronghcm:这样默认就跳转Move/index 前提的控制的public ActionResult Index()的VIew是Index.shtml
public class MoveController : Controller { public ActionResult Index() { //ViewBag.Message = "欢迎使用 ASP.NET MVC!"; return View(); } }
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Move", action = "Index", id = UrlParameter.Optional } ); }
@人生如茶,不会苦一辈子,但要苦一阵子:
根据你的代码这样设置的话?运行起来页面ulr根本没有shtml后缀?
重写url已解决