我有兩個模型,見下,並試圖從一個視圖中插入其中每個模型到數據庫。我已經創建了一個視圖模型來嘗試這樣做。MVC3 - 使用ViewModel插入 - 未將對象引用設置爲對象的實例
public class Blog
{
public int BlogID { get; set; }
public string Title { get; set; }
public DateTime CreatedOn { get; set; }
public virtual User User { get; set; }
public virtual ICollection<BlogPost> Posts { get; set; }
}
public class BlogPost
{
public int PostID { get; set; }
public string Body { get; set; }
public DateTime CreatedOn { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
}
public class BlogViewModel
{
public Blog Blog { get; set; }
public BlogPost BlogPost { get; set; }
}
使用視圖模型我張貼到創建控制器:
[HttpPost]
public ActionResult Create(BlogViewModel blog)
{
if (ModelState.IsValid)
{
User user = unit.UserRepository.GetUser();
blog.Blog.User = user;
blog.Blog.CreatedOn = DateTime.Now;
unit.BlogRepository.Insert(blog.Blog);
unit.BlogPostRepository.Insert(blog.BlogPost);
unit.Save();
return RedirectToAction("Index");
}
return View(blog);
}
這保持引發錯誤
對象引用不設置到對象的實例。
就行blog.Blog.User = user
。
對我做錯什麼想法?
編輯 我查了POST數據,它是所有那裏,正確的,但它被張貼一切,Blog.Title =
和BlogPost.Body =
所以在控制器中的視圖模型並沒有收到任何東西。如果我改變控制器的ActionResult到:
public ActionResult Create(Blog blog, BlogPost post)
然後,它所有的作品。那麼爲什麼不以視圖模型格式發送數據呢?我正在使用顯式視圖模型基於您的視圖和控制器之間的交互
@model Test.Models.BlogViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Blog</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Blog.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Blog.Title)
@Html.ValidationMessageFor(model => model.Blog.Title)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.BlogPost.Body)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BlogPost.Body)
@Html.ValidationMessageFor(model => model.BlogPost.Body)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
我們展示視圖代碼 – twoflower
是,沒有看到你的觀點是如何使用視圖模型,我們不能幫你。 –
我已添加視圖。非常感謝。 –