1

シンプルなブログ サイトのプロファイル タイプ ページを作成しようとしています。次のような 2 つの単純なモデル クラスがあります。

public class UserInfoModel
{

    public string UserName { get; set; }


    public string Email { get; set; }


    public string Password { get; set; }


    public string ConfirmPassword { get; set; }



}


public class NewPost
{

    public string PostTitle { get; set; }


    public string PostStory { get; set; }

}

次のようにビューに渡すユーザーと投稿の共同モデル クラスを作成しました。

public class UserPostModel
{
    public UserInfoModel User { get; set; }
    public NewPost Post { get; set; }
}

ユーザーと投稿情報を取得するために私が書いたメソッドは次のようなものです:

public int GetUserID(string _UserName)
    {
        using (var context = new TourBlogEntities1())
        {
            var UserID = from s in context.UserInfoes
                         where s.UserName == _UserName
                         select s.UserID;
            return UserID.Single();

        }
    }

    public UserInfo GetUserDetails(int _UserID)
    {
        using (var context = new TourBlogEntities1())
        {
            var UserDetails = (from s in context.UserInfoes
                              where s.UserID == _UserID
                              select s).Single();
            return UserDetails;
        }
    }

    public Post GetUserPosts(int _UserID)
    {
        using (var context = new TourBlogEntities1())
        {
            var entity = (from s in context.Posts
                         where s.UserID == _UserID
                         select s).Single();

            return entity;
        }
    }

そして最後に、次のようにコントローラー アクションからすべてのメソッドを呼び出しています。

[Authorize]
   public ActionResult MyProfile()
   {
       var Business = new Business();
       var UserID=Business.GetUserID(User.Identity.Name);
       var UserEntity=Business.GetUserDetails(UserID);
       var PostEntity=Business.GetUserPosts(UserID);




       var model = new UserPostModel();
       model.User.UserName = UserEntity.UserName; // problem showing here
       model.User.Email = UserEntity.Email;
       model.Post.PostTitle = PostEntity.PostTitle;
       model.Post.PostStory = PostEntity.PostStory;




       return View("MyProfile",model);
   }

「オブジェクトがオブジェクト タイプまたは null オブジェクトを参照していません」のような実行時エラー。単一のモデルを渡している間、私は非常によく似た方法でうまくいきました。ここで何が間違っているのですか?

4

1 に答える 1

1

UserPostModel を変更しました

public class UserPostModel
{
    public UserPostModel()
    {
       User = new UserInfoModel();
       Post = new Post();   
    }
    public UserInfoModel User { get; set; }
    public NewPost Post { get; set; }
}

注: モデルに設定する前に、null であってはならない各値を確認してください。

于 2012-10-11T06:20:11.197 に答える