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 に答える