Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVC中未使用AJAX的Dropdownlist onchange事件_Asp.net_Ajax_Asp.net Mvc_Onchange - Fatal编程技术网

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

ASP.NET MVC中未使用AJAX的Dropdownlist onchange事件,asp.net,ajax,asp.net-mvc,onchange,Asp.net,Ajax,Asp.net Mvc,Onchange,我试图在ASP.NETMVC项目中为我的dropdownlist使用onChange事件,尽管它不起作用 包含表单的视图如下所示: @using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "pages", InsertionMode = InsertionMode.Replace })) {

我试图在ASP.NETMVC项目中为我的dropdownlist使用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>
 @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.BeginForm(“操作”、“控制器”,
新选择
{
HttpMethod=“POST”,
UpdateTargetId=“页面”,
InsertionMode=InsertionMode.Replace
}))
{
@DropDownListFor(m=>m.SelectedFrom,Model.ChangeFrom,new{onChange=“this.form.submit();”)
}
使用上面的代码,onChange在按预期选择dropdownlist中的项目时激发。虽然它没有使用ajax,但它只是将我重定向到一个新页面,而不是更新/填充“pages Div”

虽然

如果我删除dropdownlist的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>
 @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.BeginForm(“SelectedUser”、“ReplaceName”,
新选择
{
HttpMethod=“POST”,
UpdateTargetId=“页面”,
InsertionMode=InsertionMode.Replace
}))
{
@DropDownListFor(m=>m.SelectedFrom,Model.ChangeFrom)
}
它使用Ajax,只重新加载“pages Div”

我错过什么了吗

问候,,
Chris

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

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

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

但我认为您不希望这样做,因为您不会像Ajax表单那样得到div替换。你得自己接线


第二个保持在页面上,因为这就是
Ajax.BeginForm
的工作原理。它知道该输入与您正在提交的Ajax表单相关联,并使用
AjaxOptions

中的值截取调用。我使用jQuery实现了这一功能:

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

我不太清楚你的意思。我认为this.form.submit()函数与后面触发的函数相同。由于我希望dropdownlist在发生更改时触发控制器中的一个方法,因此如何为ajax执行此操作?您是希望提交表单还是只是在控制器上调用一些随机操作?我希望提交表单,因为我希望将下拉列表中的值传递给控制器方法。但是我希望该方法的结果以partialview的形式返回,使用ajax并只更新相关的div元素。实际上,我会使用GET here并使用$(#pages div).load()。所以类似于$('#SelectedFrom').change(function(){$(#pages div.load(''));