2014-10-13 4 views
0

Я использую asp.net mvc с angularjs для моего проекта. Как вернуть некоторые дополнительные данные (smth, такие как переменная isOwner) вместе с объектом user?проверить, запрашивает ли пользователь свою страницу в asp.net mvc/angularjs

var isOwner = false; 
if(user.Alias == User.Identity.Name) 
isOwner = true;) 

На представлении я хочу показать кнопку редактирования, только если пользователь запрашивает его собственную страницу

Вот контроллер апи:

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 }) 
}]) 

ответ

1

You просто нужно вернуть 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 объекта к ViewModel. Если вы часто находите отражение свойств, которые могут стать утомительными, я настоятельно рекомендую использовать Automapper.