.net mvc4 areas 路由如何设置自定义路由

&>&ASP.NET MVC4开发指南(高清版)完整版带目录 适合初学入门
ASP.NET MVC4开发指南(高清版)完整版带目录 适合初学入门
上传大小:53.09MB
第一部分基础观念篇
  第1章在学习ASP.NETMVC之前
  1.1何谓MVC
  1.1.1何谓Model¨
  1.1.2何谓View
  1.1.3何谓Controller
  1.2初探MVC架构
  1.2.1彼此的关联性
  1.2.2Controller与View的关联性
  1.2.3View与Model的关联性
  1.2.4Model与Controller的关联性
  1.3彼此的独立性
  1.3.1Controller与View之间的独立性
  1.3.2View与Model之间的独立性
  1.3.3Model与Controller之间的独立性
  1.4为什么要ASP.NETMVC
  1.4.1关注点分离与可维护性
  1.4.2开放特性与社群支持
  1.4.3开发工具与效率
  1.4.4易于测试的架构
  1.4.5易于分工的架构
  1.5总结
  第2章创建正确的开发观念
  2.1关注点分离
  2.2以习惯替换配置
  2.2.1Cotroller
  2.2.2View
  2.2.3Model
  2.3开发ASP.NETMVC项目时的建议
  2.4ASP.NETMVC常见问题
  2.5总结
  第3章新手上路初体验
  3.1认识VisualStudio2012开发工具
  3.2介绍NuGet套件管理员
  3.2.1遭遇问题
  3.2.2使用方法
  3.2.3开启程序包管理器控制台(PackageManagerConsole)
  3.2.4启用NuGet套件还原
  3.3创建第一个ASPNETMVC专案
  3.3.1利用ASP.NETMVC4项目模板创建项目
  3.3.2创建数据模型
  3.3.3创建控制器、动作与检视
  3.3.4测试当前创建好的留言板网页
  3.3.5查看数据库属性
  3.3.6了解自动生成的程序代码
  3.3.7调整前台让用户留言的版面
  3.4学习MVC的注意事项
  3.4.1了解不同的项目类型
  3.4.2初学者常犯的错误
  3.4.3小心使用Request与Response对象
  3.4.4不要在检视中撰写过多的程序逻辑
  3.5总结
  第2篇技术讲解篇
  第4章Routing与ASP.NETMVC生命周期
  4.1Routing——网址路由
  4.1.1比对通过浏览器传来的HTTP要求
  4.1.2响应适当的网址给浏览器
  4.1.3默认网址路由属性解说
  4.2HTTP要求的URL如何对应网址路由
  4.2.1网址路由演示
  4.2.2替网址路由加上路由值的条件约束
  4.3网址路由如何在ASPNETMVC中生成网址
  4.4ASP.NETMVC的运行生命周期
  4.4.1网址路由比对
  4.4.2运行Controller与Action
  4.4,3运行View井回传结果
  4.5总结
  第5章Model相关技术
  5.1关于Model的责任
  5.2开发Model的基本观念
  5.2.1何谓ORM
  5.2.2数据库开发模式
  5.3LocalDB介绍
  5.3.1LocalDB的运作方式
  5.3.2如何连接LocalDB实例
  5.3.3管理LocalDB自动实例
  5.3.4管理LocalDB具名实例
  5.4使用CodeFirst创建数据模型
  5.4.1创建数据模型
  5.4.2创建数据上下文类
  5.4.3设计模型之间的关联性
  5.4.4启用延迟装入特性
  5.5使用CodeFirst数据库迁移
  5.5.1EFCodeFirst如何记录版本
  5.5.2启用数据库迁移
  5.5.3运行数据库迁移
  5.5.4自定义数据库迁移规则
  5.5,5自动数据库迁移
  5.5.6如何避免数据库被自动创建或自动迁移
  5.6使用ViewModel数据检视模型
  5.7扩充数据模型
  5.7.1定义数据模型的Metadata
  5.7.2自定义Metadata验证属性
  5.7.3ASP.NETMVC3新增的验证属性
  5.7.4EntityFramework新增的验证属性
  5.7.5.NET4.5新增的验证属性
  5.8总结
  第6章Controller相关技术
  6.1关于Controller的责任
  6.2Controller的类别与方法
  6.3Controller的运行过程
  6.3.1找不到Action时的处理方式
  6.3.2动作名称选定器
  6.4动作方法选定器
  6.4.1NonAction属性
  6.4.2HTTP动词限定属性
  6.5ActionResult解说
  6.5.1ViewResult
  6.5.2PartialViewResult
  6.5.3EmptyResult
  6.5.4ContentResult
  6.5.5FileResult
  6.5.6JavaScriptResult
  6.5.7JsonResult
  6.5.8RedirectResult
  6.5.9RedirectToRoute
  6.5.10HttpStatusCodeResult
  6.5.11HttpNotFoundResult
  6.5.12HttpUnauthorizedResult
  6.6ViewData、ViewBag与TempData概述
  6.6.1ViewData
  6.6.2ViewData.Model
  6.6.3ViewBag
  6.6.4TempData
  6.7模型绑定
  6.7.1简单模型绑定
  6.7.2使用FormCollection取得窗体信息
  6.7.3复杂模型绑定
  6.7.4多个复杂模型绑定
  6.7.5判断模型绑定的验证结果
  6.7.6模型绑定验证失败的错误详细信息
  6.7.7清空模型绑定状态
  6.7.8使用Bind属性限制可被更新的数据模型属性
  6.7.9使用UpdateModel与TryUpdateModel
  6.8动作过滤器
  6.8.1授权过滤器属性
  6.8.2动作过滤器属性
  6.8.3结果过滤器属性
  6.8.4例外过滤器属性
  6.8.5自定义动作过滤器属性
  6.9总结
  第7章View数据呈现相关技术
  7.1关于View的责任
  7.2了解Razor语法
  7.2.1Razor基本语法
  7.2.2Razor与HTML混合输出
  7.2.3Razor与HTML混合输出陷阱与技巧
  7.2.4Razor与ASPX语法比较255
  7.2.5Razor的主版页面框架
  7.2.6@helper辅助方法
  7.2.7@functions自定义函数
  7.2.8@model引用参考资料型别
  7.2.9@using引用命名空间
  7.3View如何从Action取得数据
  7.3.1使用弱型别模型取得数据
  7.3.2使用强型别模型取得数据
  7.4HTML辅助方法
  7.4.1使用HTML辅助方法输出超链接
  7.4.2使用HTML辅助方法输出表单
  7.4.3使用HTML辅助方法载入分部视图
  7.4.4使用检视模板输出内容
  7.4.5自定义HTML辅助方法
  7.5Url辅助方法
  7.6Ajax辅助方法
  7.6.1使用Ajax超链接功能
  7.6.2使用Ajax表单功能
  7.6.3了解AjaxOptions型别
  7.7总结
  第8章Area区域相关技术
  8.1何时会需要使用Area切割网站
  8.2如何在现有项目中新增区域
  8.3如何设置区域的网址路由
  8.4默认路由与区域路由的优先级
  8.5就算使用区域,控制器的名称仍然会冲突
  8.6如何指定默认网站与区域网站的链接
  8.7总结
  第3篇开发实战篇
  第9章高级实战:电子商务网站开发
  第10章ASP.NETMVC开发技巧
  第11章安装部署...展开收缩
综合评分:0(0位用户评分)
所需积分/C币:
下载个数:9
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var q = $("#form1").serializeArray();
console.log(q);
var res_area_r = $.trim($(".res_area_r").val());
if (res_area_r == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
var mess = $(".res_area_r").val();
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, _username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click",'.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
$(".res_area_r").val($.trim($(".res_area").val()));
评论共有0条
审核通过送C币
Windows编程
创建者:stamp1973
Quartz.NET官方实例历史版本
创建者:qq_
C#代码实例
创建者:nihang1234
上传者其他资源上传者专辑
asp.net mvc5+EF+autofac后台管理系统
EasyUI1.4.API中文版
开发技术热门标签
VIP会员动态
下载频道用户反馈专区
下载频道积分规则调整V1710.18
开通VIP,海量IT资源任性下载
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
CSDN&VIP年卡&4000万程序员的必选
为了良好体验,不建议使用迅雷下载
ASP.NET MVC4开发指南(高清版)完整版带目录 适合初学入门
会员到期时间:
剩余下载个数:
剩余C币:593
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
全站600个资源免积分下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
ASP.NET MVC4开发指南(高清版)完整版带目录 适合初学入门拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3b831a7de57c43d7-ua98).
重新安装浏览器,或使用别的浏览器一:简单介绍什么是Web api
二:怎么定义的 Post Get Put 和 Delete
三:简单使用,直接从前台传递一个类到后台接收
四:其他获取值的方式
一:简单介绍什么是Web api
REST属于一种设计风格,REST 中的 POST(新增数据),GET(取得数据),PUT(更新数据),DELETE(删除数据)来进行数据库的增删改查,而如果开发人员的应用程式符合REST原则,则它的服务为&REST风格Web服务&也称的RESRful Web API&。
微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:
GET:生到数据列表(默认),或者得到一条实体数据
POST:添加服务端添加一条记录,记录实体为Form对象
PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输
DELETE:删除 服务端的一条记录
二:怎么定义的 Post Get Put 和 Delete
首先我们从MVC4 的WEB API模板自动创建的演示文件进行分析
从演示的列子,我们可以看到在Action 中没有使用[HttpGet]、[HttpPost] 等修饰,那究竟它是如何运作的呢
Action 皆以HTTP 动词开头Get、Post、Put、Delete ,这个也是刚好符合 webapi的约定的,什么约定呢?
你调用什么类型的方法& ,例如& post 方法,那么他就去 你的所有的 action 里面 去找 以 post 开头的方法& ,名字可以随便叫,例如 postToDataBase 等等,只要开头匹配 就可以了
打个比喻,假设今天服务端收到了一个GET 请求时,会去查找对应的Controller 并且Action 以"Get..." 开头的方法,举个例子:GetMembers、GetTime,以此类推,如果我们从jQuery Ajax 发出了一个POST 请求,也会自动对应到以"Post..." 开头的Action 内,也就是说实际呼叫哪个Controller 的Action 不是利用网址来决定,而是依照HTTP 所送出的请求来决定,这也就是非常典型的REST风格,而在Web API 中也处理了回传的数据,让我们看看Get() 这个方法,回传IEnumerable&T& 的方法,等于我们拥有了强类型。
我们再来看看默认的 api 路由表
这里,只注册到了controller,没有到action,因为api的action名称是有约定的。
&&& webapi大约有这样的约定: &&&&action名称中有get的,0参数,匹配路由到/控制器 &&&&action名称中有get的,1参数,匹配路由到 /控制器/id &&&&action名称中有post的,0参数,匹配路由到post方式的/控制器 &&&&action名称中有post的,1参数,匹配路由到post方式的/控制器/id
&&&& 对于返回,可以直接返回一个class,则apicontroller自动根据请求的content-type序列化成xml或者json。具体例子为,用ie打开相应api的url返回的是json,用chrome返回的就是xml。
另外我们可以注意到在Post Put的方法参数有一个关键字[ FromBody ],而Get、Delete则没有。,事实上没有加[ FromBody ]就默认为[ FromUri ].
[ FromBody ]表示由请求文件本体中取得资料,就像一般表单Post Submit一样,取得资料的来源是由请求本体中取得,而[ FromUri ]则表示由URI中取得资料,就像在网址列中的所夹带的参数
在webapi的示范代码里,Get方法很简单只有一个id参数的传入并且是简单的int型,因此我们可以用&&这样的请求执行Get(int id)方法,但事实上并非每个请求都只用一个简单的参数就可以能搞定,有时我们可能需要2个或以上的参数才能传递或者是获取到数据,我们可以到路由里面改为接受两个参数,分别为{ p1 } & { p2 }
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "webapi/{controller}/{p1}/{p2}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
那么对应的 Controller 里面获取Get的方法需要修改为
public string Get(String p1, String p2)
return p1 + "/" + p2;
我们去调用一下试试&&
这种方法,虽然比较简单,但是如果我们的参数更多的时候,还是这样去修改 路由也是很麻烦的,我们就采用下面的方法,直接传递类到后台
四:复杂传值,直接从前台传递一个类到后台接收
我们还是把路由表恢复成以下
4.1 我们先在前台页面,用post方式,来传递一个类的2个值到后台
定义一个简单的类
我们在前台提交的页面设置 方式为 post 提交 ,地址就指向我们的 webapi地址
由于我们是通过 Post方式提交的数据,那么后台接收的时候,就是用 FromBody 来进行接收,由于刚好我们传递的前台数据就是类的2个字段,那么后台接收的时候,也可以直接用类来接收,webapi会根据类型和字段来帮我们自动加载数据,获取到值.
如果你这里是用 get 方式进行传值的,那么这里的&FromBody&就应该换成&FromUri
4.2 用get方式来获取数据
我直接在前台,用一个超链接,里面 指向我们的webapi 并且传递2个值,刚好是我们的UserInfo类的2个属性
&4.3& 即使我们传了一个不存在型别里的属性名称参数值,也不会引发错误,该参数只会被忽略掉
例如,我们修改4.1的例子,在post提交的时候,我们新增加一个 参数,这个参数在后台的 Userinfo类里面是没有对应的属性的,我们这样提交之后,后台接收到值,会自动忽略掉不在类属性里面的值
4.4 最传统 通过 request.form& 和& request.querystring 的方式的获取值
我们传统的在 aspx或者是 一般处理程序里面获取值是通过 request.querystring和request.form 来获取到.那么在 webapi里面,则是有些改变
public void Post([FromBody]string value)
HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context
HttpRequestBase request = context.R//定义传统request对象
string name = request.Form["name"];
可以通过上面这种强转的方式获取,也可以直接
var context = HttpContext.Current.R&&
WEBAPI中的Request是HttpRequestMessage类型,不能像Web传统那样有querystring和from 方法接收参数,而传统的HttpReqest的基类是HttpReqestBase.&& 所以这里我们就直接使用(HttpContextBase)Request.Properties["MS_HttpContext"]
五: 前台调用, ajax 来调用&&&
可以参考&&
六: 后台调用,后台代码调用
七 : 如果我们想不用 Get/Post/Put/Delete ,怎么定义 ? 简单,我们自己在方法上打上 接受动词标签& HttpPost& HttpGet
我们按照 api/{controller}/{id}的格式&
比如我们在 xiaoxin 这个& apicontroller 有自己写的2个方法(注意 他们的参数名是一样的,方法名 不一样)
我们想通过get方法来调用其中一个方法&&
这个时候就会直接报错&&请求的资源不支持 http 方法&GET&
如果说我们使用的方法名称不是 Get/Post/Put/Delete 的规则时,那么我们就一定要宣告它的接受动词 (Accept Verb),所以我们可以修改如下代码:
再次调用其中的一个方法,并且传递参数过去&
居然直接就报错了,提示& :& 找到了与该请求匹配的多个操作
这里报错的坑爹原因是:&&你以为你刚才那样写 url 是在调用& AccessToken方法?&&你太天真了,都说了, 我们的webapi是只绑定到 controller 上,而不绑定到 action上的,调用什么方法,完全看你是用的 post 还是get方法,并且是根据action的名字里面有没有 post和 get 来匹配action的 ,我这里使用url的方式显然是get方法,& 然后& AccessToken?name=joey&pwd=lee 这么一大串,在路由里面实际就是代表了参数id, 当匹配到 controller 里面的时候,发现有2个& HttpGet 的方法, 但是 这2个方法,他们的参数名字都是一模一样的,所以就提示了, 找到了与该请求匹配的多个操作&.
那么如何修改呢?
阅读(...) 评论()Asp.Net MVC4.0开发CMS系统案例之路由规则修改 - 192.168.1.1-路由器设置 | 192.168.0.1-无线路由器设置
192.168.1.1-路由器设置 | 192.168.0.1-无线路由器设置
Asp.Net MVC4.0开发CMS系统案例之路由规则修改
&&&&今天开放的时候,发现如果我要把生成View视图页csthtml建立多个文件夹目录下面,contraller就找不到了。实际开发工作中,不可能所有生成的视图都放在View下面的一级文件夹下,对于系统的代码管理不是十分科学,于是我就尝试如何让它实现。
&&&&比如登录功能,控制器建立的路径为:Contrallers/Sys/Com/UserContraller.cs.如图:
&&&&系统添加视图默认生成View的路径为:View/User/UserLogin.cshtml.如果我要把路径改为View/Sys/Com/UserLogin.cshtml,与Contraller的保持一直,就会报错系统找不到它。
&&&&系统默认的规则只会到view/user/里面搜索。这是因为路由设置了/view/{contraller}/{action}/id 规则,当文件被移走之后就找不到了。因此我们需要通知真正的位置在哪里。
自定义路由规则,在App_Start文件夹下新建一个类MyRoute.继承自RazorViewEngine 对选择视图方法FindView进行重写。编写代码如下:
using&System.Collections.G
using&System.L
using&System.W
using&System.Web.M
namespace&Hillstone.App_Start
&&&&public&sealed&class&MyRoute&:&RazorViewEngine
&&&&&&&&///&&summary&
&&&&&&&&///&自定义路由规则
&&&&&&&&///&&/summary&
&&&&&&&&public&MyRoute()
&&&&&&&&&&&&ViewLocationFormats&=&new[]
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&~/Views/{1}/{0}.cshtml&,
&&&&&&&&&&&&&&&&&~/Views/Shared/{0}.cshtml&,
&&&&&&&&&&&&&&&&&~/Views/Sys/Com/{1}/{0}.cshtml&
&&&&&&&&&&&&};
&&&&&&&&public&override&ViewEngineResult&FindView(ControllerContext&controllerContext,&string&viewName,&string&masterName,&bool&useCache)
&&&&&&&&&&&&return&base.FindView(controllerContext,&viewName,&masterName,&useCache);
让将这个路由规则在Global中注册,注册方法如下:
using&System.Collections.G
using&System.L
using&System.W
using&System.Web.H
using&System.Web.M
using&System.Web.O
using&System.Web.R
using&Hillstone.DAL;
using&Hillstone.App_S
namespace&Hillstone
&&&&public&class&MvcApplication&:&System.Web.HttpApplication
&&&&&&&&protected&void&Application_Start()
&&&&&&&&&&&&AreaRegistration.RegisterAllAreas();
&&&&&&&&&&&&WebApiConfig.Register(GlobalConfiguration.Configuration);
&&&&&&&&&&&&FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
&&&&&&&&&&&&RouteConfig.RegisterRoutes(RouteTable.Routes);
&&&&&&&&&&&&BundleConfig.RegisterBundles(BundleTable.Bundles);
&&&&&&&&&&&&RegisterView();
&&&&&&&&&&&
&&&&&&&&protected&void&RegisterView()
&&&&&&&&&&&&ViewEngines.Engines.Clear();
&&&&&&&&&&&&ViewEngines.Engines.Add(new&MyRoute());
相关文章列表
本站精华推荐阅读
本类编辑最新推荐
本类热门文章阅读
本站热点推荐阅读
关于我们 -
- 友情链接 -
- 版权声明2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 mvc4路由配置 的文章

 

随机推荐