我试图在我的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;。
我错过了什么吗?
此致 克里斯
答案 0 :(得分:1)
我通过使用jQuery来实现它:
onchange = "$(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
中的值拦截该调用。