ASP MVC ActionName in Ajax.BeginForm

本文关键字:Ajax BeginForm in ActionName MVC ASP | 更新日期: 2023-09-27 18:18:08

我正在使用这个超载的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" })

ASP MVC ActionName in Ajax.BeginForm

try

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

这就是你想要的重载。

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

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

请注意,用实参名称规范声明形参只是为了说明目的。这是此重载的默认顺序,因此您不需要像我这样显式声明它们。