ASP.NET MVC中的Dropdownlist onchange事件不使用AJAX

时间:2016-05-18 13:07:07

标签: asp.net ajax asp.net-mvc onchange

我试图在我的ASP.NET MVC项目中使用onChange事件作为我的下拉列表,但是它没有用。

包含表单的视图如下所示:

@using (Ajax.BeginForm("Action", "Controller",
 new AjaxOptions
 {
     HttpMethod = "POST",
     UpdateTargetId = "pages",
     InsertionMode = InsertionMode.Replace
 }))
        {
            @Html.DropDownListFor(m => m.SelectedFrom, Model.ChangeFrom, new { onChange = "this.form.submit();" })                
        }

       <div id="pages"></div>

使用上面的代码,按预期在下拉列表中选择项目时会触发onChange。虽然它没有使用ajax,但它只是将我重定向到一个新页面,而不仅仅是更新/填充&#34; pages-Div&#34;。

...虽然

如果我删除下拉列表的onChange事件,添加一个简单的提交按钮,如下所示:

 @using (Ajax.BeginForm("SelectedUser", "ReplaceName",
 new AjaxOptions
 {
     HttpMethod = "POST",
     UpdateTargetId = "pages",
     InsertionMode = InsertionMode.Replace
 }))
        {
            @Html.DropDownListFor(m => m.SelectedFrom, Model.ChangeFrom)
            <input type="submit" value="GO" />
        }

它使用Ajax并仅重新加载&#34; pages-Div&#34;。

我错过了什么吗?

此致 克里斯

2 个答案:

答案 0 :(得分:1)

我通过使用jQuery来实现它:

onchange = "$(this.form).submit();"

Is there a better jQuery solution to this.form.submit();?

答案 1 :(得分:0)

第一个方案是将您重定向到新页面,因为您正在执行form.submit(),但是返回false,因此操作正在运行完成。如果你换了新的

{ onChange = "this.form.submit();" } 

{ onChange = "this.form.submit(); return false;" }

您可能需要编写一个小的javascript函数来进行两次调用。

但我不认为你想要这样,因为你不会得到Ajax表格会为你做的div替换。你必须自己连线。

第二个停留在页面上,因为Ajax.BeginForm的工作方式。它知道该输入与您提交的Ajax表单相关联,并使用AjaxOptions中的值拦截该调用。