0

我在我的项目中使用带有 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 })
}])
4

1 回答 1

1

您只需要返回一个视图模型而不是User模型。视图模型应包含视图所需的任何属性,而不仅仅是公开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

于 2014-10-13T08:19:56.957 回答