如何在编辑后将TextArea的值返回给ActionResult

时间:2014-11-11 18:51:33

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

我对MVC很新,但是设法使用以下方法将值从视图返回到控制器:

@using (Html.BeginForm("ExtendBookingForwardsInTime", "Listings", new { bookingID = Model.BookingID }, FormMethod.Post, new { id = "ExtendBookingForwardsInTime" }))
      {
           <a href="#" onclick="document.getElementById('ExtendBookingForwardsInTime').submit();">Extend Forwards</a>
      }

但是,这只会从模型中返回一个值。

我想填充TextArea,编辑它,然后返回编辑后的值。

以下不起作用。我只是返回原始的Model值,而我想要编辑的值

@Html.EditorFor(model => model.Comment, new { htmlAttributes = new { @class = "form-control", rows = 10 } })
@using (Html.BeginForm("UpdateComments", new { bookingID = Model.BookingID, newComment = Model.Comment }, FormMethod.Post, new { id = "UpdateComments" }))
      {
         <div>
              <a href="#" class="btn  btn-default" onclick="document.getElementById('UpdateComments').submit();">Save</a> 
         </div>                       
      } 

这是我的行动结果。

    public ActionResult UpdateComments(int bookingID, string newComment)
    {

我已经在整个网络上进行了跟踪,但我不明白我应该做些什么。

1 个答案:

答案 0 :(得分:2)

您的textarea的内容不会作为表单集合的一部分提交给服务器,因为它不在您的表单之内。将其移到表单中,你会发现它有效。

您还可以通过使用提交类型的输入替换您的锚标记及其onclick处理程序来简化操作,该输入将在单击时默认提交表单。

编辑:

进一步检查时,您在表单中包含的路由数据会导致模型的Comment属性的编译时值以newComment的形式发布回服务器

移动表单内的文本区域后,表单集合现在还将用户的条目包括为Comment,因此您应该将操作方法​​的签名更改为:

public ActionResult UpdateComments(int bookingID, string Comment)

您可以从作为第二个参数传递给newComment = Model.Comment方法的匿名对象中删除BeginForm