Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 将ng应用程序添加到ASP.NET 5 MVC 6页“;“休息”;_Angularjs_Angular Ui Router_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

Angularjs 将ng应用程序添加到ASP.NET 5 MVC 6页“;“休息”;

Angularjs 将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

我有一个我正在开发的应用程序,我很想使用angular。问题是,当我将ng app=“app”添加到我的布局页面上的html标记时,它会打断我的登录页面(这是用户将遇到的第一个页面)。当我插入凭据并按下登录按钮时,什么也没有发生。只要我删除ng app=“app”指令,登录就会正常工作。下面是一些代码:

_Layout.cshtml

Login.cshtml

@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">&copy; 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");
        }
    }
}