尝试在 mvc 3 中一次将两个模型传递到同一个视图时出现问题

Posted

技术标签:

【中文标题】尝试在 mvc 3 中一次将两个模型传递到同一个视图时出现问题【英文标题】:Having issue while trying to pass two model to the same view at a time in mvc 3 【发布时间】:2012-10-11 06:13:43 【问题描述】:

我正在尝试为我的简单博客网站创建我的个人资料类型页面。我有两个像这样的简单模型类:

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);
   

显示类似“对象未引用对象类型或空对象”的运行时错误。在传递单个模型时,我以非常相似的方式工作得很好。我在这里做错了什么?

【问题讨论】:

【参考方案1】:

修改了你的 UserPostModel

public class UserPostModel

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

注意:在设置为模型之前检查每个值,它不应为空。

【讨论】:

以上是关于尝试在 mvc 3 中一次将两个模型传递到同一个视图时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

在 python openCV 中一次将许多图像读入内存

是否可以在 C# winforms 中一次将文本写入多个文本框?

有没有办法在 Swift 中一次将委托分配给同一类的多个对象?

使用 JQuery 一次将 JSON 数据传递到 div

一次将多行传递到sql数据库时出错[重复]

在单个视图中一次缩放和平移两个图像