我的页面非常简单。它显示了一张图片并有一个评论部分(这是一个局部视图)。我只希望在提交新评论时刷新部分视图。所以我有这个:
<tr>
<td>@Html.TextBox("NewComment")</td>
</tr>
<tr>
@Ajax.ActionLink("Submit", "InsertComment", new
{
Id = Model.userParticipation.Id,
CurrentPosition = 0,
CurrentComments = Model.currentComments,
NewCommentText = "???"
},
new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "CommentSection"
})
</tr>
我唯一的问题是,我不知道如何将NewComment TextBox中输入的文本传递给NewCommentText变量(而不是&#34; ???&#34;字符串)。任何帮助将不胜感激。
答案 0 :(得分:2)
@Ajax.ActionLink
将为锚标记生成标记(连接了jjified行为)。但是,由于您要向服务器提交新注释,因此您需要一个输入字段供用户输入注释和可能的表单。如果您希望此表单提交具有ajaxified行为,则可以使用Ajax.BeginForm
帮助程序方法。
@using (Ajax.BeginForm("InsertComment", "Home", new
{
Id = Model.userParticipation.Id,
CurrentPosition = 0,
}, new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "CommentSection"
}))
{
<label>Enter comment</label>
<input type="text" name="NewCommentText" />
<input type="submit" />
}
<div id="CommentSection"></div>
这将生成带有name属性值设置为“NewCommentText”的input元素的form标签。
假设您的InsertComment
操作方法(在HomeController内)具有与输入字段同名的参数以及Id
和CurrentPosition
等其他参数,这应该可行。< / p>
[HttpPost]
public ActionResult InsertComment(string NewCommentText,int Id,int currentPosition)
{
// to do : Save and return some valid markup
return Content("To do : Replace this with useful html markup");
}