我在Ajax.BeginForm
方面遇到了一些困难我在视图中有这样的东西
<% using (Ajax.BeginForm("ActionName", null , null, new { id = "FormName" }))
{%>
<input type="hidden" value = '<%= Html.Encode( Model.id) %>' name="id"/>
<textarea id="message" name=message rows="4" style="width: 90%">
</textarea>
<% }%}
动作方法是这样的
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult ActionName(int id, string message)
{
....
}
我正在尝试将'id'和'message'传递给action方法。我正在为routeValues传递'null',但我不知道该传递什么。理想情况下,我试图找到一个不需要路由值的重载,但是使用了actionName和htmlattributes(用于表单名称),但我找不到一个。我不想在视图模型中添加“message”,我确实需要用于jquery操作的FormName。 解决这个问题的最佳方法是什么?
哦,我忘了提,这是我发布表格的方式
$.post($("#FormName").attr('action'), $("#FormName").serialize(),
function(result) {
$("#correspondingDiv").html(result);
}
);
答案 0 :(得分:32)
使用此重载: http://msdn.microsoft.com/en-us/library/dd470605.aspx
Ajax.BeginForm(
string "ActionName",
string "ControllerName",
new routevalues {id="IDValue",message="MyMessage"},
new AjaxOptions {OnBegin=[someFunction], OnFailure=[failureFunction] },
new { id = "FormName" }
)
答案 1 :(得分:0)
尝试:
<% using (Ajax.BeginForm("ActionName", null))
{%>
<input type="hidden" value = '<%= Html.Encode( Model.id) %>' name="id"/>
<textarea id="message" name=message rows="4" style="width: 90%">
</textarea>
<% }%}
我认为您的问题过于复杂,ID和Message将从表单中的字段回滚填充,因此您无需在表单声明中指定它们。您可能还想尝试Html.BeginForm()
,除非您真的需要Ajax响应。