如何检查模型中的子模型是否已在Asp MVC视图中定义?

时间:2014-12-12 08:58:49

标签: c# asp.net-mvc asp.net-mvc-5

我有两个班级模型:

Author.cs

public class Author()
{
    public int AuthorID { get; set; }
    public string Name { get; set; }
    public string  Location { get; set; }
    [DataType(DataType.MultilineText)]
    public string  Bio { get; set; }

    public virtual ICollection<Blog> Blogs { get; set; }
}

Blog.cs

 public class Blog
 {
    public int BlogID { get; set; }
    public int AuthorID { get; set; }
    public virtual  Author Author { get; set; }
    [Required]

    public string  Title { get; set; }

    [DataType(DataType.MultilineText)]
    public string  Description { get; set; }
 }

显然,作者可以有很多博客 现在,问题出在博客的视图中。 如果一个人写“〜/ Blog / Create”我首先要检查是否已有任何作者对象。 如果没有,我会先将它们重定向到“〜/ Author / Create”。 这就是我到目前为止试图完成的事情:

Blog / Create.cshtml 的标题:

@model MVCproject.Models.Blog

@{
  if (Model.Author == null)
  {

        Response.Redirect("~/Author/Create");

  }

这是我能表达它的最合理的方式,但是Null Exception被抛到我身上,我不知道要解决这个问题。 我怀疑我必须将“if(Model.Author == null)”语句更改为更方便的内容。

修改

我没有更改控制器中的任何内容,我按原样离开了mvc脚手架。

1 个答案:

答案 0 :(得分:2)

在视图中有任何逻辑是一个糟糕的设计决定。您应该在控制器中执行重定向。

在您的创建博客操作中,如果作者是null,只需将用户重定向到另一个操作:

return RedirectToAction("Create", "Author");