有没有办法通过ASP.NET MVC 3 razor中的html.actionlink传递整个模型

时间:2013-01-04 11:26:44

标签: c# razor asp.net-mvc-4

@Html.ActionLink("Reply", "BlogReplyCommentAdd", "Blog",
     new { blogPostId = blogPostId, replyblogPostmodel = Model,
     captchaValid = Model.AddNewComment.DisplayCaptcha },null)

我的控制器:

public ActionResult BlogReplyCommentAdd(int blogPostId, BlogPostModel model, bool captchaValid)
{}

在我的控制器中,我传递的是整个模型。但是,在达到Action

之前,属性的值为null

BlogPostModel:

  [Validator(typeof(BlogPostValidator))]
public partial class BlogPostModel : BaseNopEntityModel
{
    public BlogPostModel()
    {
        Tags = new List<string>();
        Comments = new List<BlogCommentModel>();
        AddNewComment = new AddBlogCommentModel();

    }

    public string SeName { get; set; }

    public string Title { get; set; }

    public string Body { get; set; }

    public bool AllowComments { get; set; }

    public int NumberOfComments { get; set; }

    public DateTime CreatedOn { get; set; }

    public IList<string> Tags { get; set; }

    public IList<BlogCommentModel> Comments { get; set; }
    public AddBlogCommentModel AddNewComment { get; set; }


}

我需要整个模型。 提前致谢

1 个答案:

答案 0 :(得分:1)

你根本不会采用这种正确的方式。唯一一次在查询字符串中传递整个模型数据,就像通过GET操作提交HTML表单一样;即使这样,除非HTTP缓存不是问题,否则这并不理想。

在这种情况下,您已经将查询字符串中的博客帖子的ID传递给控制器​​方法 - 因此在您的控制器方法中,您可以检索博客文章模型,然后将其传递给视图。

编辑一旦添加了这个答案 - @levelnis'评论然后出现 - 他/他们说的是完全相同的事情。

<强>更新

考虑一下 - 如果你这样做是因为你的网站是如何运作的 - 那么任何人都可以在你的博客网站上“发布”内容,将查询字符串用各种可怕的东西播种,更不用说让你的网站成为一个游乐场对于SEO垃圾邮件发送者等。