我一直在关注网络教程,试图在.NET MVC应用程序上学习angularJS。所有的教程似乎涵盖获取一个列表,获取单个项目等。与MVC调用angularJS - 如何做除CRUD以外的东西?
我想要做的是允许用户填写一个电子邮件地址,我想验证该电子邮件地址对数据库并返回true或如果存在则为假。然后我试图把这个价值放在范围内,这样我就可以做出一些事情来回应它的真实还是错误。
我正在使用单页面应用程序,所以这是登录html。
<form name="form" class="form-horizontal">
<div class="control-group" ng-class="{error: form.ValidEmailAddress.$invalid}">
<label class="control-label" for="ValidEmailAddress">Valid Email Address</label>
<div class="controls">
<input type="email" ng-model="item.ValidEmailAddress" id="ValidEmailAddress">
</div>
</div>
<div class="form-actions">
<button ng-click="login()" class="btn btn-primary">
Go!
</button>
<label ng-if="user.isAuthorised">Authorised</label>
<label ng-if="!user.isAuthorised">NotAuthorised</label>
</div>
</form>
在我的app.js文件中,我声明了一个loginCtrl控制器,当url是/ login时,所以这一切都很好。那我号召我的按钮点击其中的逻辑是这样的:
var LoginCtrl = function ($scope, $location, $http, AuthorisedUser) {
$scope.login = function() {
var isValidUser = $http.get("/AuthorisedUser/IsValidUser/" + $scope.item.ValidEmailAddress);
$scope.user.isAuthorised = isValidUser;
} };
然后是调用的MVC AuthorisedUserController类方法:
public bool IsValidUser(string id)
{
var list = ((IObjectContextAdapter)db).ObjectContext.CreateObjectSet<ApprovedUser>();
var anyItems = list.Any(u => u.ValidEmailAddress == id);
return anyItems;
}
所以,依稀仿佛当我把一个是工作值“aaa”放入文本框中。但是,尽快我尝试在电子邮件地址中输入值是未定义的。也许我应该做一个帖子,但我可以成功击中我的.NET控制器的唯一方法是使用get。
我确定我错过了基本知识,并有可能以错误的方式解决这个问题。
在情况下,它可以帮助我创建了一个模块工厂的定义是这样的:
var EventsCalendarApp = angular.module("EventsCalendarApp", ["ngRoute", "ngResource"]).
config(function ($routeProvider) {
$routeProvider.
when('/login', { controller: LoginCtrl, templateUrl: 'login.html', login: true }).
otherwise({ redirectTo: '/' });
});
EventsCalendarApp.factory('AuthorisedUser', function ($resource) {
return $resource('/api/AuthorisedUser/:id', { id: '@id' }, { isValidUser: { method: 'GET' } });
});
我的一个问题是 - 我应该使用$ HTTP对象访问控制方法,还是有
AuthorisedUser.IsValidUser($scope.item.validEmailAddress)
我知道在本教程中,我下面,我可以做的东西一样:
CalendarEvent.save()
使用我厂的声明,这样我就可以去类似的方式
能够调用CalendarEventController post方法。
那么“AAA”的作品,但电子邮件却没有? – Jorg
正确(我最初有我的输入类型的文本,并试图将其更改为电子邮件,以帮助(我注意到我复制上面),但它开始通过undefined,而不是输入框中的字符串 – Jen
' @'不能用在url中,get请求使用url参数.' @'是一个保留关键字。也许你可以尝试编码/解码它。 – Jorg