我对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)
{
我已经在整个网络上进行了跟踪,但我不明白我应该做些什么。
答案 0 :(得分:2)
您的textarea的内容不会作为表单集合的一部分提交给服务器,因为它不在您的表单之内。将其移到表单中,你会发现它有效。
您还可以通过使用提交类型的输入替换您的锚标记及其onclick处理程序来简化操作,该输入将在单击时默认提交表单。
编辑:
进一步检查时,您在表单中包含的路由数据会导致模型的Comment
属性的编译时值以newComment
的形式发布回服务器
移动表单内的文本区域后,表单集合现在还将用户的条目包括为Comment
,因此您应该将操作方法的签名更改为:
public ActionResult UpdateComments(int bookingID, string Comment)
您可以从作为第二个参数传递给newComment = Model.Comment
方法的匿名对象中删除BeginForm
。