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 = поэтому модель представления в контроллере не получала ничего. Если я изменю результат действия контроллера на:

public ActionResult Create(Blog blog, BlogPost post)

Тогда все это работает. Так почему же данные не отправляются в формате viewmodel? Я использую явное взаимодействие на основе модели представления между вашими представлениями и контроллером

@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>

Ответы на вопрос(1)

Ваш ответ на вопрос