我在与Ajax.BeginFormasp.net的MVC 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'传递给操作方法。我为routeValues传递'null',但我不知道要传递什么。理想情况下,我试图找到一个不需要路由值的重载,但采取了actionName和htmlattributes(对于表单名称),但我找不到一个。我不想向视图模型添加“消息”,而且我确实需要在那里用于jquery操作的FormName。 解决此问题的最佳方法是什么?
哦,我忘了说,这是我的发布形式
$.post($("#FormName").attr('action'), $("#FormName").serialize(),
function(result) {
$("#correspondingDiv").html(result);
}
);
当我尝试这个解决方案时,控制器操作方法被调用,但它仍然具有在BeginForm中定义的初始路由值,而不是在窗体中填写的值。有什么想法吗 ? – 2010-04-08 13:48:02
使用Ajax.BeginForm无法填充表单中的值,因为BeginForm助手在页面呈现时被调用。您可以使用Request.Form获取表单字段的值。 – 2010-04-08 14:57:02