在我的mvc应用程序中,我有combobox,我尝试这样做:当用户选择一些项时,这些项将从控制器调用一些函数。
Index.html:
 @using (Ajax.BeginForm("dor", "Home", new AjaxOptions
                    {
                        HttpMethod = "Get",
                        //UpdateTargetId = "myPic",
                        InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace
                    }))
                    {
                        @Html.DropDownListFor(x => x.SelectedFileName, Model.Files, new { Name = "map", @class = "form-control", onchange = "CallChangefunc()" })
                    }
.
.
.
 <script type="text/javascript">
    function CallChangefunc() {
     window.location.href = '@Url.Action("dor","Home")';
 }
 </script>HomeVM:
public class HomeVM
{
    public List<SelectListItem> Files { get; set; }
    public string SelectedFileName { get; internal set; }
    public List<string> DynamicAlgorithems { get; set; }
}Homecontroller:
public void dor()
{
       //some code    
}问题是:当用户从组合框中选择某一项时,它会将我重定向到空白页面,即http://localhost:55354/Home/dor,但我只想调用名为dor的函数,而不是转到空白页面!
我遗漏了什么?
发布于 2018-07-20 10:07:22
window.location.href总是重定向到分配给它的新页面URL。当onchange方法触发时,需要使用jQuery.ajax()来调用动作方法,并返回期望的结果:
jQuery (在 $(document).ready()**)**内部
$('#SelectedFileName').change(function() {
    var selectedFileName = $(this).val();
    $.ajax({
        type: 'GET',
        url: '@Url.Action("Dor", "Home")',
        data: { fileName: selectedFileName },
        success: function (result) {
            // do something
        }
    });
});控制器
[HttpGet]
public ActionResult Dor(string fileName)
{
    // do something
}注意:确保操作方法参数与从AJAX回调传递的赋值data同名。
https://stackoverflow.com/questions/51432500
复制相似问题