将模型传递给控制器

时间:2014-05-30 06:55:10

标签: asp.net-mvc view

我试着结束一个非常简单的博客。在我看来,我得到了这个:

@using (Html.BeginForm("AddBlogPost", "Home")) <--Probably missing something here
{
    foreach (var item in Model.BlogPost)
     {
         @Html.LabelFor(x=>item.Title)
         @Html.TextBoxFor(x=>item.Title)
         @Html.LabelFor(x=>item.Text)
         @Html.TextBoxFor(x=>item.Text)
     }
      <input type="submit" value="Create Post"  />
}

使用submit-button,我希望将这两个值传递给该控制器:

 public ActionResult AddBlogPost(BlogPost model)
        {

            BlogPost post = new BlogPost()
            {
                Title = model.Title,
                Text = model.Text,
            };

            RavenSession.Store(post);
            RavenSession.SaveChanges();
            return RedirectToAction("Index");
        }

创建新的博客帖子并将其保存到数据库中。 问题是该方法接收null。猜猜我错过了傻傻的东西?

编辑:

我不再传递博客帖子列表......:

@using (Html.BeginForm("AddBlogPost", "Home"))
{

         @Html.LabelFor(Model.Title)
         @Html.TextBoxFor(Model.Title)
         @Html.LabelFor(Model.Text)
         @Html.TextBoxFor(Model.Text)

      <input type="submit" value="Create Post"  />
}

这似乎不是正确的方法......

编辑2:这是我的两个班级:

 public class ContentPage
    {
        public ContentPage()
        {
            Template = new RouteTemplate();
            ParentReference = "";
            Url = "/";


        }

        public string ParentReference { get; set; }
        public RouteTemplate Template { get; set; }
        public string Url { get; set; }
        public bool ShowInMenu { get; set; }
        public string Title { get; set; }
        public string Id { get; set; }

        public BlogPost BlogPost { get; set; }
    }

博客类:

public class BlogPost
    {
        public string Title { get; set; }
        public string Text { get; set; }
    }

在视图中我传递了COntentPage,其中包含Blog-post的一个实例......我似乎无法以您描述的方式访问博客帖子?对不起,从一开始就没有发现。

1 个答案:

答案 0 :(得分:1)

使用BlogPost类绑定您的视图,不要使用foreach循环。请参阅以下代码。

    @using (Html.BeginForm("AddBlogPost", "Home"))

    {


         @Html.LabelFor(x=>Model.Title)
         @Html.TextBoxFor(x=>Model.Title)
         @Html.LabelFor(x=>Model.Text)
         @Html.TextBoxFor(x=>Model.Text)

        <input type="submit" value="Create Post"  />
}