代码之家  ›  专栏  ›  技术社区  ›  Flufy

从index.html中的控制器调用函数

  •  0
  • Flufy  · 技术社区  · 8 年前

    在我的mvc应用程序中,我有一个组合框,我正在尝试执行以下操作:当用户选择某个项时,该项将从控制器调用某个函数。

    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>
    

    家庭虚拟机:

    public class HomeVM
    {
        public List<SelectListItem> Files { get; set; }
        public string SelectedFileName { get; internal set; }
        public List<string> DynamicAlgorithems { get; set; }
    }
    

    家庭控制器:

    public void dor()
    {
           //some code    
    }
    

    问题:当用户从组合框中选择某个项目时,它会将我重定向到空白页,即 http://localhost:55354/Home/dor ,但我只想调用名为 dor ,不要转到空白页!是的。

    我错过了什么?

    Related

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tetsuya Yamamoto    8 年前

    window.location.href 始终重定向到分配给它的新页面URL。你应该用 jQuery.ajax() 调用action方法时 onchange 方法触发并返回所需结果:

    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
    }
    

    笔记 确保action方法参数与assigned具有相同的名称 data 从ajax回调传递。