Ajax.BeginForm中的ASP MVC ActionName

时间:2013-06-13 13:39:10

标签: c# asp.net-mvc forms

我正在使用Ajax.BeginForm()的重载:

(this AjaxHelper, AjaxOptions ajaxOptions):MvcForm

这一切都很好。

但现在我需要在我的<form>标记中添加一个属性,因此我需要发送htmlAttributes - 我需要使用Ajax.BeginForm()的另一个重载。

这是我的问题:当我使用第一个重载时,我得到一个正确的href表单,但是第二个重载,我需要传入一个ActionName。我试过传递真正的ActionName,我得到了错误的href。我试图传入NULL值,但它仍然是错误的href(但与我传入真正的ActionName(“Index”)时相同)。

我可以使用其他任何方法来添加我的表单属性或其他方法来解决这个问题吗? (我当然可以用javascript添加它,就像我们在90年代所做的那样,但这是2013年......)

编辑: 这是我现在使用的重载,它给了我错误的href:

    Ajax.BeginForm("Index",null,new AjaxOptions() { HttpMethod = "POST", 
InsertionMode = InsertionMode.Replace, UpdateTargetId = "myform" }, 
    new { enctype = "multipart/form-data" })

2 个答案:

答案 0 :(得分:1)

尝试

@Ajax.BeginForm("Index","YourControllerName",null,new AjaxOptions() { HttpMethod
 ="POST", InsertionMode = InsertionMode.Replace,UpdateTargetId = "myform"}, 
new { enctype = "multipart/form-data" })

答案 1 :(得分:0)

这是你想要的超载。

@Ajax.BeginForm("actionName", "controllername", null, ajaxOptions: new AjaxOptions(), htmlAttributes: new Dictionary<string, object>())

指定您的操作和控制器名称。然后,您为路由值指定null并传入其余参数。

请注意,使用参数名称规范声明参数仅用于说明目的。这是此重载的默认顺序,因此您不需要像我一样明确声明它们。