Angularjs 将ng应用程序添加到ASP.NET 5 MVC 6页“;“休息”;
我有一个我正在开发的应用程序,我很想使用angular。问题是,当我将ng app=“app”添加到我的布局页面上的html标记时,它会打断我的登录页面(这是用户将遇到的第一个页面)。当我插入凭据并按下登录按钮时,什么也没有发生。只要我删除ng app=“app”指令,登录就会正常工作。下面是一些代码: _Layout.cshtml Login.cshtmlAngularjs 将ng应用程序添加到ASP.NET 5 MVC 6页“;“休息”;,angularjs,angular-ui-router,asp.net-core,asp.net-core-mvc,Angularjs,Angular Ui Router,Asp.net Core,Asp.net Core Mvc,我有一个我正在开发的应用程序,我很想使用angular。问题是,当我将ng app=“app”添加到我的布局页面上的html标记时,它会打断我的登录页面(这是用户将遇到的第一个页面)。当我插入凭据并按下登录按钮时,什么也没有发生。只要我删除ng app=“app”指令,登录就会正常工作。下面是一些代码: _Layout.cshtml Login.cshtml @model App.ViewModels.LoginViewModel @{ ViewBag.Title=“登录”; } 请登录: A
@model App.ViewModels.LoginViewModel
@{
ViewBag.Title=“登录”;
}
请登录:
AccountController.cs:
命名空间应用程序控制器
{
[路线(“账户”)]
公共类AccountController:控制器
{
私人签名管理人(u SignInManager);
公共帐户控制器(SignInManager SignInManager)
{
_signInManager=signInManager;
}
[路线(“登录”)]
公共IActionResult登录()
{
返回视图();
}
[路线(“登录”)]
[HttpPost]
公共异步任务登录(LoginViewModelVM,字符串返回URL)
{
if(ModelState.IsValid)
{
var signedResult=wait _signInManager.PasswordSignInAsync(vm.Username,vm.Password,
正确的,错误的);
if(signedResult.successed)
{
if(string.IsNullOrEmpty(returnUrl))
{
返回重定向到操作(“索引”、“主页”);
}
其他的
{
返回重定向(returnUrl);
}
}
其他的
{
AddModelError(“,”用户名或密码不正确。“);
}
}
返回视图();
}
公共异步任务注销()
{
if(User.Identity.IsAuthenticated)
{
等待_signInManager.SignOutAsync();
}
返回重定向到操作(“索引”、“主页”);
}
}
}
编辑:当在登录帖子上设置断点时,当ng应用程序启动时,它不会被点击,但当ng应用程序关闭时(显然)会被点击
EDIT2:回答下面的一些评论并添加另一个症状:
1.)无论HTML5模式是启用还是禁用都不起作用。
2.)我已经在所有浏览器中进行了测试。没有控制台错误,什么都没有
当我删除=“app”时,我从asp验证中获得页面验证。当我添加它时,不再进行页面验证。让我想到这可能是一个asp.net和/或mvc的东西。对这个新的“发展”有什么想法吗
EDIT3:我的登录方式似乎有问题,可能是路由问题。我删除了ng应用程序并完成了登录,然后将其重新添加并成功注销。因此,我的控制器似乎可以通过angular“initialized”成功命中。是否有写入控制台的内容(浏览器开发工具)?无内容。我没有收到任何JavaScript错误,也没有服务器端异常。可能是
HTML5模式
-当单击提交按钮时,URL是否发生了变化?@tymeJV:我在app.js中注释了所有内容,只是注册了模块并运行了它,导致了我发布的相同问题。今天晚上,当我有时间仔细检查代码时,我会再试试。你用什么浏览器?你能用不同的方法测试吗?还有一点:如果改用data ng应用程序呢?
<!DOCTYPE html>
<html ng-app="app">
<head>
<title>App</title>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<div id="sidebar" class="container-fluid">
<div id="sidebar" ui-view="sidebar" class="container-fluid">
<ul class="nav">
<li class="active"><a asp-controller="Home" asp-action="Index">Home</a></li>
<li><a asp-controller="AppStuff" asp-action="Get">AppStuff</a>
<li><a asp-controller="MoreStuff" asp-action="Get">MoreStuff</a></li>
@if (User.Identity.IsAuthenticated)
{
<li><a asp-controller="Account" asp-action="Logout">Logout</a></li>
}
</ul>
</div>
</div>
<div id="wrapper">
<nav class="navbar navbar-inverse">
<nav class="navbar navbar-inverse" ui-view="navbar">
<div>
<ul class="nav navbar-nav navbar-left">
<li><button id="sidebarToggle" class="btn btn-primary"><i class="glyphicon glyphicon-chevron-left"></i></button></li>
</ul>
<a href="/" class="navbar-brand">App</a>
<ul class="nav navbar-nav navbar-right">
<li><a asp-controller="Home" asp-action="Contact">Contact</a></li>
<li><a asp-controller="Home" asp-action="About">About</a></li>
</ul>
</div>
</nav>
</nav>
<div id="content" ui-view="content" class="container-fluid">
@RenderBody()
</div>
<div id="footer">
<div class="navbar navbar-inverse navbar-fixed-bottom">
<h4 class="text-center text-info">© App 2016</h4>
</div>
</div>
</div>
<script type="text/javascript" src="~/lib/jquery/dist/jquery.min.js"></script>
<script type="text/javascript" src="~/lib/bootstrap/dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="~/lib/angular/angular.js"></script>
<script type="text/javascript" src="~/lib/ui-router/release/angular-ui-router.js"></script>
<script type="text/javascript" src="~/app/app.js"></script>
<script type="text/javascript" src="~/js/site.js"></script>
</body>
</html>
var app;
(function (app) {
'use strict';
config.$inject = ['$stateProvider', '$locationProvider', '$httpProvider'];
function config($stateProvider, $locationProvider, $httpProvider) {
$locationProvider.html5Mode({
enabled: true,
rewriteLinks: false,
requireBase: false
});
}
run.$inject = ['$rootScope', '$log'];
function run($rootScope, $log) {
$rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {
$log.error("State change error:");
$log.error(toState);
$log.error(toParams);
$log.error(fromState);
$log.error(fromParams);
$log.error(error);
});
$rootScope.$on('$stateNotFound', function (event, unfoundState, fromState, fromParams) {
console.log(event);
console.log(unfoundState);
console.log(fromState);
console.log(fromParams);
});
}
angular
.module('app', ['ui.router'])
.config(config)
.run(run);
})(app || (app = {}));
@model App.ViewModels.LoginViewModel
@{
ViewBag.Title = "Login";
}
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h3 class="page-header">Please log in:</h3>
<form method="post">
<div asp-validation-summary="ValidationSummary.ModelOnly"></div>
<div class="form-group">
<label asp-for="Username"></label>
<input asp-for="Username" class="form-control" />
<span asp-validation-for="Username" class="text-warning"></span>
</div>
<div class="form-group">
<label asp-for="Password"></label>
<input type="password" asp-for="Password" class="form-control" />
<span asp-validation-for="Password" class="text-warning"></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Login"/>
</div>
</form>
</div>
</div>
namespace App.Controllers
{
[Route("Account")]
public class AccountController : Controller
{
private SignInManager<User> _signInManager;
public AccountController(SignInManager<User> signInManager)
{
_signInManager = signInManager;
}
[Route("Login")]
public IActionResult Login()
{
return View();
}
[Route("Login")]
[HttpPost]
public async Task<ActionResult> Login(LoginViewModel vm, string returnUrl)
{
if (ModelState.IsValid)
{
var signedInResult = await _signInManager.PasswordSignInAsync(vm.Username, vm.Password,
true, false);
if (signedInResult.Succeeded)
{
if (string.IsNullOrEmpty(returnUrl))
{
return RedirectToAction("Index", "Home");
}
else
{
return Redirect(returnUrl);
}
}
else
{
ModelState.AddModelError("", "Username or password is incorrect.");
}
}
return View();
}
public async Task<ActionResult> Logout()
{
if (User.Identity.IsAuthenticated)
{
await _signInManager.SignOutAsync();
}
return RedirectToAction("Index", "Home");
}
}
}