MVC route 和 Angular router 单页面的一些方式
直接看代码和注释吧
ASP.NET MVC router
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("favicon.ico");
routes.MapMvcAttributeRoutes(); //一定要在 routes.MapRoute 之前注册
//单页面的处理
routes.MapRoute(
name: "PersonalProfile",
url: "personal-profile/{*pathInfo}", //这样写可以把所有under personal-profile 的路径连到同一个控制器
defaults: new { controller = "PersonalProfile", action = "Index", pathInfo = "pathInfo" }
);
//一般的处理
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
ASP.NET Controller
//[RoutePrefix("personal-profile")]
public class PersonalProfileController : Controller
{
//[Route("")]
public ActionResult Index(string pathInfo)
{
//pathInfo 我们还可以另作处理
return View();
}
}
这里可以注意一点,如果使用了 AttributeRoute , routeMap 就不灵了,
cshtml Angular
@{
Layout = null;
}
<!DOCTYPE html>
<html ng-app="app" ng-controller="ctrl">
<head>
<base href="http://localhost:58404/personal-profile/" />
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
personal profile
<script src="~/js/jquery.js"></script>
<script src="~/js/angular.js"></script>
<script>
function redirectBaseUrlWithoutSlash() {
//refer : https://github.com/angular/angular.js/issues/14018
if (location.pathname.charAt(location.pathname.length - 1) != "/") {
var oldHref = location.href;
var newHref = location.protocol + "//" + location.host + location.pathname + "/" + location.search + location.hash;
console.log(oldHref);
console.log(newHref)
location.href = newHref;
}
}
redirectBaseUrlWithoutSlash(); //处理没有url来的时候不是end with /
var app = angular.module("app", []);
app.config(["$locationProvider", function ($locationProvider) {
//note :
//因为 angular 在做 $location 和 <base> 的时候会对比游览器的url
//而且是有区分大小写的,所以很容易error
//reset之后就不会有这个问题了.
//做法是拿游览器的url replace 进 base href
var wholeUrl = location.href;
var baseElem = document.getElementsByTagName("base")[0];
var baseUrl = baseElem.href;
var newBaseUrl = wholeUrl.substring(0, baseUrl.length);
baseElem.href = newBaseUrl;
$locationProvider.html5Mode({
enabled: true,
requireBase: true
});
}]);
app.controller("ctrl", ["$location", function ($location) {
console.log("start");
}]);
</script>
</body>
</html>
注意 angular 和 base 的冲突
MVC route 和 Angular router 单页面的一些方式的更多相关文章
- 使用Angular构建单页面应用(SPA)
什么是SPA?看下图就是SPA: 下面说正经的,个人理解SPA就是整个应用只有一个页面,所有的交互都在一个页面完成,不需要在页面之间跳转. 单页面的好处是更快的响应速度,更流畅的用户体验,甚至和桌面应 ...
- router单页面多个标签tags的用法<router-view></router-view>
<keep-alive><router-view :key="path" /></keep-alive>
- 基于angular的route实现单页面cnodejs
Angular ui-router 前言 之前不太理解前端怎么实现路由功能,以前知道有一种方式使用html5的pushState可以操作url才实现路由的功能,在实践项目中也用过一次,后来这种操作叫成 ...
- 基于angularJs的单页面应用seo优化及可抓取方案原理分析
公司使用angularJs(以下都是指ng1)框架做了互联网应用,之前没接触过seo,突然一天运营那边传来任务:要给网站做搜索引擎优化,需要研发支持.搜了下发现单页面应用做seo比较费劲,国内相关实践 ...
- Nginx 解决WebApi跨域二次请求以及Vue单页面问题
一.前言 由于项目是前后端分离,API接口与Web前端 部署在不同站点当中,因此在前文当中WebApi Ajax 跨域请求解决方法(CORS实现)使用跨域处理方式处理而不用Jsonp的方式. 但是在一 ...
- 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route
心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验 ...
- AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构
requirejs + angular + angular-route 浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又 ...
- AngularJS中的route可以控制页面元素的改变,使多页面变成一个单页面。。。
SPA(Single Page Application)指的是通单一页面展示所有功能,通过Ajax动态获取数据然后进行实时渲染,结合CSS3动画模仿原生App交互,然后再进行打包(使用工具把Web应用 ...
- H5单页面架构:requirejs + angular + angular-route
说到项目架构,往往要考虑很多方面: 方便.例如使用jquery,必然比没有使用jquery方便很多,所以大部分网站都接入类似的库: 性能优化.包括加载速度.渲染效率: 代码管理.大型项目需要考虑代码的 ...
随机推荐
- mysql binaryVInstall
下载mysql 1.下载:在http://dev.mysql.com/downloads/mysql/官网上下载mysql-5.5.28-linux2.6-i686.tar.gz. 2.解压 -lin ...
- linux是一种修行
或许我当初开始学习linux是因为我在了解嵌入式的时候,查到的资料,说linux是最好的系统,那时可能自己太嫩了,自己就信了,直到最近这几天我才被ubuntu折腾的要死,就是一个环境变量,我折腾怀了我 ...
- aspx,ascx和ashx使用小结
做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网上有很多文章介绍.“纸上得来终觉浅,绝知此事要躬行”,下面自己总结一下做个笔记.1..aspxWeb窗体设计页面.We ...
- 多态 JAVA
多态(Java) 一.多态 1.什么是多态? 不同的对象对于同一个操作,做出的响应不同 具有表现多种形态的能力的特征 2.使用多态的优点 : 为了实现统一调用 二.子类到父类的转换(向上转型) ① ...
- Asp.Net异常:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"的解决方法
今天项目中碰到一个以前从没有见过的异常信息“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值”,于是查了一下资料,原来此异常是由于我在代码中使用了"Response.End ...
- url参数中有+、空格、=、%、&、#等特殊符号的处理
url参数中有+.空格.=.%.&.#等特殊符号的问题解决? 解决办法: 将这些字符转化成服务器可以识别的字符,对应关系如下: URL字符转义 + URL 中+号表示空格 %2B 空格 URL ...
- Unix C++(boost) 线程同步和线程组
#include <boost/thread.hpp> #include <iostream> #include <vector> #include <cst ...
- PowerDesigner 生成带凝视SQL 各个版本号通用10(12、15)
做数据库是设计时最苦恼的事就是用PowerDesigner工具设计完数据库运行SQL文件后没有凝视.那么怎么才干让PowerDesigner设计完有凝视呢,下边教你一个笨的方法,方法尽管笨,可是能实现 ...
- IIS部署FTP服务器步骤
本文介绍如何在IIS中部署FTP服务端.首先确认windows开启了ftp功能:确认方法:进入控制面板->程序->打开或关闭windows功能如下图所示: 确认FTP勾选 确认后打开IIS ...
- SpringMVC05使用注解的方式
<body> <a href="add">新增</a> <a href="update">修改</a> ...