试图将textarea传递给Actionlink

时间:2014-04-16 11:49:41

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

我已经尝试了一段时间才能让这个工作起来但是当我开始时我就没有了。 我一直在尝试为我的网页创建一个评论系统,并且每个工作都很好,但是当创建注释时,文本区域内容不会传递给控制器​​,因此当创建对象时,内容为空。

查看

<p>
@using(Html.BeginForm())
{
    <input type="text" name="commentContents" value="commentContents" />
   @Html.ActionLink("Create New", "CreateComment", new { id = Model.Id }, new { commentContents ="commentContents" })

}

控制器

[Authorize]
    public ActionResult CreateComment(int Id, string commentContents)
    {
        BO.CommentItem commentItem = new BO.CommentItem(
            Id,
            commentContents,
            (int)Membership.GetUser().ProviderUserKey);

        using (DataLayer.Repository db = new DataLayer.Repository())
        {
            db.AddComment(commentItem);
            db.Save();
        }

        return View();

    }

2 个答案:

答案 0 :(得分:1)

您需要使用此类表单

<form method="post" action="@Url.Action("Action", "Controller")">
     @Html.TextArea("value")
</form>

答案 1 :(得分:1)

这样做:

@using(Html.BeginForm("CreateComment","Controller",FormMethod.Post))
{
    <input type="text" name="commentContents" value="commentContents" />
    @Html.HiddenFor(x=>x.Id)
   <input type="submit" value="Comment"/>

}

动作:

[Authorize]
[HttpPost]
    public ActionResult CreateComment(FormCollection form)
    {
        string commentContents = form["commentContents"].ToString();
        int Id = Convert.ToInt32(form["Id"]);
        BO.CommentItem commentItem = new BO.CommentItem(
            Id,
            commentContents,
            (int)Membership.GetUser().ProviderUserKey);

        using (DataLayer.Repository db = new DataLayer.Repository())
        {
            db.AddComment(commentItem);
            db.Save();
        }

        return View();

    }