首页 > Web开发 > 详细

在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数

时间:2015-11-20 12:11:49      阅读:313      评论:0      收藏:0      [点我收藏+]

目前项目中有个需求,需要在WebForm中去构造MVC的URL信息,这里写了一个帮助类可以在ASP.NET非MVC环境中(WebForm中)构造MVC的URL信息,主要就是借助当前Http上下文去构造System.Web.Mvc.UrlHelper类。

using System;
using System.Configuration;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace RetailCustomerInsight.Web.Utils
{
    /// <summary>
    ///     MVC URL帮助类,在ASP.NET 非MVC环境中构造MVC的URL信息
    /// </summary>
    public static class MVCUrlHelper
    {
        /// <summary>
        /// 根据ActionName构造MVC的URL
        /// </summary>
        /// <param name="actionName">MVC控制器中的ActionName</param>
        /// <returns>MVC的URL</returns>
        public static string Action(string actionName)
        {
            var route = new RouteData();//构造一个空的RouteData,表示当前Http上下文中不存在MVC的上下文信息(即当前Request请求的URL信息不能提供是在MVC的哪个Controller中,也不能提供是在Controller下的哪个Action中)
            RequestContext requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), route);
            UrlHelper url = new UrlHelper(requestContext);

            return url.Action(actionName);
        }

        /// <summary>
        /// 根据ActionName和路由参数构造MVC的URL
        /// </summary>
        /// <param name="actionName">MVC控制器中的ActionName</param>
        /// <param name="routeValues">路由参数</param>
        /// <returns>MVC的URL</returns>
        public static string Action(string actionName, object routeValues)
        {
            var route = new RouteData();//构造一个空的RouteData,表示当前Http上下文中不存在MVC的上下文信息(即当前Request请求的URL信息不能提供是在MVC的哪个Controller中,也不能提供是在Controller下的哪个Action中)
            RequestContext requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), route);
            UrlHelper url = new UrlHelper(requestContext);

            return url.Action(actionName, routeValues);
        }

        /// <summary>
        /// 根据ActionName和控制器名构造MVC的URL
        /// </summary>
        /// <param name="actionName">MVC控制器中的ActionName</param>
        /// <param name="controllerName">控制器名</param>
        /// <returns>MVC的URL</returns>
        public static string Action(string actionName, string controllerName)
        {
            var route = new RouteData();//构造一个空的RouteData,表示当前Http上下文中不存在MVC的上下文信息(即当前Request请求的URL信息不能提供是在MVC的哪个Controller中,也不能提供是在Controller下的哪个Action中)
            RequestContext requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), route);
            UrlHelper url = new UrlHelper(requestContext);

            return url.Action(actionName, controllerName);
        }

        /// <summary>
        /// 根据ActionName、控制器名和路由参数构造MVC的URL
        /// </summary>
        /// <param name="actionName">MVC控制器中的ActionName</param>
        /// <param name="controllerName">控制器名</param>
        /// <param name="routeValues">路由参数</param>
        /// <returns>MVC的URL</returns>
        public static string Action(string actionName, string controllerName, object routeValues)
        {
            var route = new RouteData();//构造一个空的RouteData,表示当前Http上下文中不存在MVC的上下文信息(即当前Request请求的URL信息不能提供是在MVC的哪个Controller中,也不能提供是在Controller下的哪个Action中)
            RequestContext requestContext = new RequestContext(new HttpContextWrapper(HttpContext.Current), route);
            UrlHelper url = new UrlHelper(requestContext);

            return url.Action(actionName, controllerName, routeValues);
        }
    }
}

 

在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数

原文:http://www.cnblogs.com/OpenCoder/p/4980203.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!