ASP.NET MVC3的伪静态实现代码

yizhihongxing

ASP.NET MVC是一种Web应用程序开发框架,它强调了分离应用程序规模、健硕性以及可扩展性及可接受性。为了增强SEO搜索引擎优化的效果,伪静态技术应运而生。下面介绍ASP.NET MVC3的伪静态技术的实现方法:

第一步:打开Global.asax.cs文件

在MVC项目中,可以打开Global.asax.cs文件。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // 路由名称
        "{controller}/{action}/{id}", // 带有参数的 URL
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
    );
}

第二步:修改RegisterRoutes方法

在修改RegisterRoutes方法之前,请在项目根目录下找到web.config文件,并将以下代码添加到中间:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <rewrite>
        <rules>
            <rule name="Rewrite to index">
                <match url="^(.*)$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="index.php/{R:0}" />
            </rule>
        </rules>
    </rewrite>
 </system.webServer>

以下是修改后的RegisterRoutes方法的代码:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
    routes.IgnoreRoute("{resource}.htm/{*pathInfo}");
    routes.IgnoreRoute("{resource}.html/{*pathInfo}");
    routes.IgnoreRoute("{resource}.php/{*pathInfo}");

    routes.MapRoute(
        "Default",                                              // 路由名称
        "{controller}/{action}/{id}",                           // 带有参数的 URL
        new { controller = "Home", action = "Index", id = "" },  // 参数默认值
        new[] { "Namespace.Controllers" }                       // controller映射的命名空间
    );
}

第三步:启用IIS URL Rewriting

启用IIS URL Rewriting。下面是一个URL重写示例。在默认情况下,URL为:

http://localhost:8080/Product/Category?CategoryID=1

通过重写,可将URL转换为静态格式,变为:

http://localhost:8080/Product/1.html

启用IIS URL Rewriting需要确保已安装IIS URL Rewriting扩展。在下载并安装成功后,在IIS管理器中,选择你的应用程序,双击IIS URL Rewrite,单击添加规则,创建重写规则并单击完成。

示例1:使用IIS Rewrite制作伪静态地址

  1. 创建一个MVC应用程序,例如命名为mysite。
  2. 打开mysite的Global.asax.cs文件,将RegisterRoutes方法修改为下面的代码:
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
    routes.IgnoreRoute("{resource}.htm/{*pathInfo}");
    routes.IgnoreRoute("{resource}.html/{*pathInfo}");
    routes.IgnoreRoute("{resource}.php/{*pathInfo}");

    routes.MapRoute(
        "Default",                                              // 路由名称
        "{controller}/{action}/{id}",                           // 带有参数的 URL
        new { controller = "Home", action = "Index", id = "" },  // 参数默认值
        new[] { "mysite.Controllers" }                          // controller映射的命名空间
    );
}
  1. 在mysite的Controllers文件夹中,创建一个名为ProductController的控制器类,该类包含以下代码:
public class ProductController : Controller
{
    public ActionResult Category(int CategoryID)
    {
        // do something
        return View();
    }

    public ActionResult Product(int ID)
    {
        // do something
        return View();
    }
}
  1. 将URL重写到静态地址,例如:
http://localhost:8080/Product/1.html
  1. 打开IIS管理器并导航到mysite,选择URL重写并创建一个新规则。定义一个规则,将请求重写为:
http://localhost:8080/Product/Category/1.html
  1. 在新规则中,定义输出的规则:
<rule name="Product Rewrite Rule" stopProcessing="true">
    <match url="^Product/([0-9]+).html$" />
    <action type="Rewrite" url="/Product/Category?CategoryID={R:1}" />
</rule>

示例2:使用默认的MVC路由制作伪静态地址

  1. 创建一个MVC应用程序,例如命名为mysite。
  2. 打开mysite的Global.asax.cs文件并添加以下代码:
public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
    routes.IgnoreRoute("{resource}.htm/{*pathInfo}");
    routes.IgnoreRoute("{resource}.html/{*pathInfo}");
    routes.IgnoreRoute("{resource}.php/{*pathInfo}");

    routes.MapRoute(
        "ProductsCategory",
        "{categoryname}/c{categoryid}.html",
        new { controller = "Category", action = "Products", categoryid = "", categoryname = "" },
        new[] { "mysite.Controllers" }
    );

    routes.MapRoute(
        "ProductDetail",
        "{categoryname}/p{productid}.html",
        new { controller = "Product", action = "Index", productid = "", categoryname = "" },
        new[] { "mysite.Controllers" }
    );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        new[] { "mysite.Controllers" }
    );
}
  1. 在mysite的Controllers文件夹中,创建一个名为CategoryController和ProductController的控制器类。

  2. 在mysite的Views文件夹中,创建一个名为Category和Product的文件夹。

  3. 创建相应的视图文件(例如,CategoryCategory.aspx和ProductIndex.aspx)。

  4. 使用以下代码编写CategoryController和ProductController控制器:

public class CategoryController : Controller
{
    public ActionResult Products(string categoryid, string categoryname)
    {
        return View();
    }
}
public class ProductController : Controller
{
    public ActionResult Index(string productid, string categoryname)
    {
        return View();
    }
}

简短的代码示例,请点击阅读更多。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC3的伪静态实现代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • WinForm中的几个实用技巧汇总

    当然!首先,我们需要明确一下,WinForm中有哪些实用技巧值得总结。我自己的经验和理解是:界面美化、控件操作和数据绑定方面的技巧。接下来,我会对这三个方面分别进行详细的说明。 界面美化 WinForm中的界面美化,通常包括以下几个方面的技巧: 1. 更换窗体边框 因为WinForm默认的边框比较丑陋,所以我们通常会使用其他美观的边框,比如圆角边框、图片边框…

    C# 2023年6月7日
    00
  • C#多线程系列之工作流实现

    C#多线程系列之工作流实现 在使用C#开发多线程应用时,需要考虑线程间的通信、锁定、线程池等诸多因素。而将这些因素整合成“工作流”则是一个不错的选择。本篇文章将为大家介绍如何使用工作流实现多线程编程。 工作流概念 工作流是一种基于人工业务过程流程的自动化技术,常用于业务流程管理、流程模拟、调度执行等领域。在C#多线程编程中,我们将线程视作工作流程中的具体实现…

    C# 2023年6月6日
    00
  • C#备忘录模式(Memento Pattern)实例教程

    C#备忘录模式(Memento Pattern)实例教程 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许将一个对象的内部状态保存到一个外部的备忘录对象中,从而可以在需要时将对象恢复到先前的状态。在本篇教程中,我们将介绍C#中备忘录模式的使用方法和实现步骤,并提供两个示例说明。 示例一:备忘录模式的基本使用 步骤一:创建备忘录类 首先…

    C# 2023年6月8日
    00
  • asp.net 未能加载文件或程序集“XXX”或它的某一个依赖项。试图加载格式不正确的程序。

    在ASP.NET开发中,经常会遇到“未能加载文件或程序集‘XXX’或它的某一个依赖项。试图加载格式不正确的程序”的错误提示。这个错误信息通常是由程序集加载失败所引起的,而这个问题的背后通常有两个原因:第一个原因是程序集本身缺失或损坏,第二个原因是引用的程序集发生变化。 如果遇到这个错误,可以按照以下步骤来解决: 1.重新编译项目:首先,尝试重新编译项目。打开…

    C# 2023年5月15日
    00
  • Unity 实现框选游戏战斗单位的思路详解

    Unity 实现框选游戏战斗单位的思路详解 框选是游戏中必不可少的功能,在游戏战斗中,我们需要选择多个战斗单位进行指挥和操作。在此处,我们将介绍如何在Unity中实现框选游戏战斗单位的功能。 实现思路 首先,监听鼠标输入,记录下鼠标移动的起点和终点,来确定选框的范围。 当鼠标抬起的时候,检查选框范围内是否存在可选中的游戏战斗单位,如果存在,将其选中并添加到选…

    C# 2023年6月3日
    00
  • c# SQLHelper(for winForm)实现代码

    下面详细介绍一下C#中使用SQLHelper来实现WinForm应用程序中的ORM映射。具体攻略如下: 1. 下载并引入SQLHelper 首先需要从Github上下载SQLHelper项目代码,并加入到自己的solution中。下载地址为:https://github.com/yanglr/SQLHelper 同时需要将SQLHelper.dll文件和SQ…

    C# 2023年5月31日
    00
  • C# 递归算法详解

    C# 递归算法详解 什么是递归算法? 递归算法是一种基于函数调用的算法,它通过函数不断地调用自身来解决问题。在使用递归算法时,程序会将问题分解为更小的子问题,并不断递归地调用函数来解决这些子问题。递归算法适用于解决需要重复进行相同操作的问题,例如对某个数据结构进行遍历,或者对某段数据进行处理。 递归算法的应用场景 递归算法广泛应用于以下场景: 数据结构的遍历…

    C# 2023年6月6日
    00
  • C#:使用ffmpeg将图片合并成视频

      最近遇到公司的一个项目,需要将多张图片合并成一个播放的视频,找了很多资料和尝试了工具,遇到很多的坑,这里记下来,希望大家也能顺利解决遇到的问题。   合并视频,主要可以借用OpenCV 和 ffmpeg,这里是尝试用ffmpeg.exe的工具去实现图片文件合并成视频。   输入存储视频文件的路径,通过ProcessStartInfo 调用ffmpeg.e…

    C# 2023年4月30日
    00
合作推广
合作推广
分享本页
返回顶部