ASPNET MVC URL、路由及区域

一、URL、路由及区域

一、      配置路由器

1、         URL模式

2、         定义路由默认值

3、         使用静态URL

4、         Route顺序

5、         自定义段变量

6、         使用action方法参数

7、         通过浏览器传参数

1、         在路由表中定义路由,需要对参数命名

2、         获取参数值:

1)、通过控制器中的action方法,如List(string cate),需要方法中的参数名和路由表中的参数相同,RouteData.Values[Key]获取,key为参数名,如果获取的是对象,可以通过模型绑定机制实现

二、      生成输出的URLS

1)         视图中静态链接

1、ActionLink:对应控制器/动作,使用默认路由

参数:new{参数=值,…}

样式:new{@class=样式名}

2、RouteLink:使用指定路由

格式:<a/>:控制器/动作/参数

2) 动态转向

1、  Redirect(url):参数是url地址

2、RedirecrToAction(action,Name,controllerName),参数为动作名和各种控制名

3、 RedirectToRoute(routeName,routeValues),转向到指定路由

routeName:路由名

routeValues=new{controller=value,action=value,id=value}

二、结合第一章MVC内容,设置产品分类显示

1、在"MVCProduct"项目单击右键添加“区域”,名字设为“Areas”

如图所示:

2、在“Areas”文件里面的“Controller”文件添加“控制器”名为“HomeController”

如图所示:

3、继续在“Areas”文件里面的“Controller”文件添加“控制器”名为“HomeController.cs”页面方法里"Index()"添加一个视图

如图所示:

三、设置”路由“添加路由参数“

如图所示:

四、给"路由"添加对应"控制器名字",名字可以在"Controller"文件里面"HomeController.cs"页面

如图所示:

五、复制名字后,把它放在"路由参数里面"

代码示例:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing; namespace MvcProduct
{
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
// 请访问 http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
} public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"cate", // 路由名称
"{controller}/{action}/{cate}", // 带有参数的 URL
new { controller = "Home", action = "Index", cate = UrlParameter.Optional }, // 参数默认值
new[] { "MvcProduct.Controllers" }
); routes.MapRoute(
"Default", // 路由名称
"{controller}/{action}/{id}", // 带有参数的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // 参数默认值
new[] { "MvcProduct.Controllers" }
); } protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); // 默认情况下对 Entity Framework 使用 LocalDB
Database.DefaultConnectionFactory = new SqlConnectionFactory(@"Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True"); RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}

如图所示:

六、在"表示层"添加一个根据名字分类方法

代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using LinqService; //引用
namespace LinqBLL
{
public class ProductBll
{
public List<Product> GetProduct()
{
using (SportsStoreEntities se = new SportsStoreEntities())
{
var products = se.Product; //数据库里面表名称
return products.ToList();
}
}
//通过分类名获取体育产品列表
public List<Product> GetProductByCateName(string cate)
{
using(SportsStoreEntities se=new SportsStoreEntities())
{
if (string.IsNullOrEmpty(cate))
{
var products=se.Product;
return products.ToList();
}
else //查找对应分类数据
{
var books = from a in se.Product
where a.Name.Contains(cate)
select a;
return books.ToList();
}
}
}
}
}

如图所示:

七、最后在"MvcProduct"项目调用方法可以了,把之前方法注释掉

代码示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; using LinqBLL;
using LinqService;
namespace MvcProduct.Controllers
{
public class HomeController : Controller
{
ProductBll bll = new ProductBll();
public ActionResult Index()
{
ViewBag.Message = "欢迎使用 ASP.NET MVC!";
return View();
}
////获取产品
//public ActionResult List()
//{
// List<Product> ps = bll.GetProduct();
// return View(ps);
//} public ActionResult List(string cate)
{
List<Product> ps = bll.GetProductByCateName(cate);
return View(ps);
}
public ActionResult About()
{
return View();
}
}
}

如图所示:

八、运行结果:输入要分类名称就可以了

第2章 ASP.NET MVC(URL、路由及区域)的更多相关文章

  1. asp.net MVC URL路由入门指南

    asp.net MVC 的URL路由是一个非常强大的功能,而且有个优点:强大单不复杂.然而,目前我在网上看到的相关资料,却都仅仅提供一些示例,仅通过这些示例,初学者基本上不可能明白为什么要这么配置,更 ...

  2. ASP.NET MVC——URL路由

    在MVC之前,ASP.NET假设请求的URL与服务器上的文件之间有关联,服务器接受请求,并输出相应的文件.而在引入MVC后,请求是由控制器的动作方法来处理的.为了处理URL,便引入了路由系统. 首先我 ...

  3. 《Entity Framework 6 Recipes》中文翻译系列 (21) -----第四章 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 4.2. 构建一个搜索查询 搜索数据是几乎所有应用的一个基本功能.它一般是动态的,因 ...

  4. 《Entity Framework 6 Recipes》中文翻译系列 (20) -----第四章 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第四章  ASP.NET MVC中使用实体框架 ASP.NET是一个免费的Web框架 ...

  5. ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL

    ASP.NET MVC URL重写与优化(1)-使用Global路由表定制URL 引言--- 在现今搜索引擎制霸天下的时代,我们不得不做一些东西来讨好爬虫,进而提示网站的排名来博得一个看得过去的流量. ...

  6. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

  7. 理解ASP.NET MVC的路由系统

    引言 路由,正如其名,是决定消息经由何处被传递到何处的过程.也正如网络设备路由器Router一样,ASP.NET MVC框架处理请求URL的方式,同样依赖于一张预定义的路由表.以该路由表为转发依据,请 ...

  8. ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase

    原文地址:http://www.51csharp.com/MVC/882.html   ASP.NET MVC URL重写与优化(进阶篇)-继承RouteBase玩转URL 引言-- 在初级篇中,我们 ...

  9. 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)

    原文:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing) [索引页] [源码下载] 返璞归真 asp.net mvc (2) - 路由(System.Web.R ...

随机推荐

  1. 靠谱的datatable转json方法

    今天有之前同事问我要datatable转json的方法,以前自己也弄过,但感觉网上有很多不靠谱的方法.所以自己在博客里记录一个,当然也是网上找的,但是这个靠谱一点,起码可以用不会报错,所以叫他靠谱的d ...

  2. ASP.NET MVC 3 网站优化总结(六)压缩 HTML

    压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽.今天就让我们看看在 ASP.NET MVC 3 怎么实现 html 压缩,我们可通过实现 ActionFilter 来完 ...

  3. 信息系统实践手记6-JS调用Flex的性能问题一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...

  4. cstore_fdw的安装使用以及源码分析

    一.cstore_fdw的简介 https://github.com/citusdata/cstore_fdw,此外部表扩展是由citusdata公司开发,使用RC_file格式对数据进行列式存储. ...

  5. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  6. plain framework 1 网络流 缓存数据详解

    网络流是什么?为什么网络流中需要存在缓存数据?为什么PF中要采用缓存网络数据的机制?带着这几个疑问,让我们好好详细的了解一下在网络数据交互中我们容易忽视以及薄弱的一块.该部分为PF现有的网络流模型,但 ...

  7. 字符串编辑距离(Levenshtein距离)算法

    基本介绍 Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric).我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个 ...

  8. Dijkstra算法(三)之 Java详解

    http://www.cnblogs.com/skywang12345/p/3711516.html

  9. xib和storyBoard哪些事之UIimage和按钮注意事项

    1.uiimageView 和按钮比较特殊,可以只设置其x,y就可以. 2.可以设置其丝例,如1:1,或者当前图片的比例,这样保证不会变形,设置比例在自身上点击control拉个线,选择 3.在右侧就 ...

  10. codevs 2830 蓬莱山辉夜

    2830 蓬莱山辉夜 http://codevs.cn/problem/2830/ 题目描述 Description 在幻想乡中,蓬莱山辉夜是月球公主,居住在永远亭上,二次设定说她成天宅在家里玩电脑, ...