我正在为我的项目使用带有angularjs的asp.net mvc。如何返回一些额外的数据(像isOwner变量一样)和user
对象一起?
var isOwner = false;
if(user.Alias == User.Identity.Name)
isOwner = true;)
在视图上,我只想在用户请求他自己的页面时显示编辑按钮
这是api控制器:
public User GetUser(String id)
{
xRM.DAO.Model.User user = null;
using (var db = new xRMContext())
{
user = db.Users
.Include("Team").Include("Unit").Include("Location")
.FirstOrDefault(u => u.Alias.ToLower() == id.ToLower());
}
if (user == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return user;
}
和angularjs控制器:
.controller('UserCtrl', ['$scope', '$location', '$routeParams', 'User', function ($scope, $location, $routeParams, User) {
$scope.user = User.get({ id: $routeParams.id })
}])
答案 0 :(得分:1)
您只需要返回一个viewmodel而不是User
模型。 viewmodel应该包含视图所需的任何属性,而不仅仅是公开User
对象的所有属性。例如:
public class UserViewModel
{
public string UserName {get; set;}
public string Email {get; set;}
// more properties from User
public bool IsOwner {get; set;}
}
您显然需要更改GetUser
操作方法,使其返回UserViewModel
,添加逻辑,确定用户是否为所有者,并将属性从User
对象映射到视图模型。如果您发现自己经常映射属性,这可能会变得单调乏味,我强烈建议您使用Automapper。