【发布时间】:2016-06-13 22:23:43
【问题描述】:
我正在开发一个 ASP.NET MVC 5 应用程序。我在父页面的div 上通过角度'ui.router' 加载部分视图。在我刷新页面之前,路由工作得很好 - 部分视图正在加载到整个页面上,但我希望它仍然作为部分加载。
这是我的代码。一个父视图,FirstPage.cshtml:
<html ng-app="myApp">
<head>
<base href="/">
<title>First Page</title>
<script src="/Scripts/Angular/angular.js"></script>
<script src="/Scripts/Angular/angular-ui-router.js"></script>
<script src="/Scripts/app.js"></script>
</head>
<body>
<h1>First Page</h1>
<ul id="myMenu">
<li ui-sref="customer">Customer</li>
</ul>
<div ui-view="containerOne"></div>
</body>
</html>
这是我的 app.js:
var myApp = angular.module("myApp", ['ui.router']);
var proposalConfig = function ($stateProvider, $locationProvider) {
$locationProvider.hashPrefix('!').html5Mode(true);
$stateProvider
.state('customer', {
url: 'Proposal/Customers',
views: {
"containerOne": {
templateUrl: '/Proposal/Customers'
}
}
});
}
proposalConfig.$inject = ['$stateProvider', '$locationProvider'];
myApp.config(proposalConfig);
我的 RouteConfig.cs:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "ProposalCustomers",
url: "Proposal/Customers",
defaults: new { controller = "Proposal", action = "Customers" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
我的 ProposalController.cs:
public ActionResult Customers()
{
return View();
}
public ActionResult FirstPage()
{
return View();
}
我的观点/提案/Customers.cshtml:
<h2>Customer list</h2>
我希望我的问题很清楚。
编辑:
我按照本文中的解决方案更改了我的 RouteConfig.cs:
http://www.codeproject.com/Articles/806500/Getting-started-with-AngularJS-and-ASP-NET-MVC-P
拥有这样的默认路由:
routes.MapRoute(
name: "Default",
url: "{*url}",
defaults: new { controller = "Proposal", action = "FirstPage" }
当我刷新一个具有与我的controller/action 完全相同的路由的页面时,它仍然会在整个页面上加载该特定路由而不是作为部分。如果我将 .state url 更改为其他页面刷新工作。但是,如果我在 URL 中手动添加 controller/action 路径,它会在整个页面上显示一个视图,而不是作为部分视图。
有没有办法避免这种情况?
【问题讨论】:
标签: asp.net-mvc angularjs angular-ui-router