您的位置:首页 > 编程语言 > ASP

asp.net mvc 使用UrlRewrite.dll设置伪静态

2017-08-14 11:24 477 查看
1.从nuget包管理下载此dll库



2.注意查看web.config是否有自动生成此配置文件

<configSections>
<section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter" />
</configSections>

<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule" />
<add name="UrlRoutingModule" type="UrlRewrite.RewriteModule, UrlRewrite" preCondition="managedHandler"/>
</modules>
</system.webServer>


3.进行路由配置

在RouteConfig进行配置路由

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//一个参数设置(页面所走路由)
routes.MapRoute(
"Index.html", // Route name
"{controller}/{action}/{newId}.html", // URL with parameters
new { controller = "Home", action = "Index" , newId = UrlParameter.Optional} // Parameter defaults
, namespaces: new[] { "MVC测试.Areas.admin.Controllers" }
).DataTokens.Add("area", "admin");
//两个参数设置(页面所走路由)
routes.MapRoute(
"Demo2.html",
"{controller}/{action}/{title}/{qishu}.html", // URL with parameters
new { controller = "Home", action = "Index", title = UrlParameter.Optional, qishu = UrlParameter.Optional } // Parameter defaults
, namespaces: new[] { "MVC测试.Areas.admin.Controllers" }
).DataTokens.Add("area", "admin");
//原生路由配置(ajax所走路由)
routes.MapRoute(    //Admin Route
"Index", // Route name
"{controller}/{action}/{newId}/{iq}/{eq}", // URL with parameters
new { controller = "Home", action = "Index", newId = UrlParameter.Optional, iq = UrlParameter.Optional, eq = UrlParameter.Optional } // Parameter defaults
, namespaces: new[] { "MVC测试.Areas.admin.Controllers" }
).DataTokens.Add("area", "admin");

}
}


ps:注意此时页面链接为

区域实验页面<a href="~/home/demo/12312/21312.html">链接</a>


这是两个参数的,自动匹配两个参数的Demo2.html路由

在控制器中的参数接收直接是mvc默认参数接收形式。

public ActionResult Demo(string newId)//参数名注意与路由参数名一样的设置(不造为啥)
{
string gg = newId;
return View();
}


ps:如果想链接带上区域标志如 ~/admin/home/demo/1231.html

将其路由配置改在区域路由文件

public class adminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "admin";
}
}

public override void RegisterArea(AreaRegistrationContext context)
{
//此处添加路由配置即可
context.MapRoute(
"admin_default",
"admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}


配上此URLWrite.dll的官网:http://www.urlrewriting.net/

调试Route的利器:

博文:http://www.cnblogs.com/cunlau/p/4198717.html

官网:https://www.nuget.org/packages/routedebugger/

注意路由顺序!!!特别本地调试和服务器的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp.net mvc