通过选项选择值到控制器

时间:2016-02-19 18:50:37

标签: c# jquery asp.net-mvc html.dropdownlistfor

每当客户从我的下拉列表中选择一个选项并将其发送回控制器时我试图获取值,我在创建文件时使用该值然后刷新页面但我无法这样做

这是我的下拉列表:



 <select id="sel0">
 <option value="">Todos</option>
   @foreach (var item in Model.Select(l => l.Fecha).Distinct())
             {
 <option value="@lines">@lines</option>
             }
 </select>
&#13;
&#13;
&#13;

这是我的Ajax电话:

&#13;
&#13;
 $('#sel0').on('change', function () {
                       dataTable.columns('.fechas').search(this.value).draw();
                   });

                   $("form").submit(function () { 
                       $.ajax({
                           url: '@Url.Action("MethodName","HomePosController")',
                           type: 'POST',
                           cache: false,
                           data: { Selected: $("#sel0").val() },
                           success: function (data) {
                               //
                           }
                       });
                   });
&#13;
&#13;
&#13;

这是我的控制器名为&#39; HomePosController&#39;:

 public ActionResult MethodName(string Selected)
    {
        var db = new ArponClientPosContext();

        String value = Selected;
        var json4 = JsonConvert.SerializeObject(Selected);
        System.IO.File.WriteAllText(@"C:\inetpub\wwwroot\potzolcalli.brain.arpon.com\valorselected.txt", json4);
        return View("~/Views/HomePos/Index.cshtml", db.Pos.ToList());
    }

但是,只要你选择我的下拉选项没有任何反应,页面没有刷新也没有创建文件我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果您希望它在下拉列表中更改,那么您必须在更改事件中发送ajax调用:

$('#sel0').on('change', function () {

   dataTable.columns('.fechas').search(this.value).draw();

   $.ajax({
                       url: '@Url.Action("MethodName","HomePos")',
                       type: 'POST',
                       cache: false,
                       data: { Selected: $("#sel0").val() },
                       success: function (data) {
                           //
                       }
                   });

并且您不必编写完整的Controller类名称,您必须跳过控制器后缀,这是常规,后面是mvc中的Url助手,这样生成的URL将是错误的, ajax调用将失败。

答案 1 :(得分:1)

  

每当y选择我的下拉选项时都没有发生

嗯,这种情况发生了:

dataTable.columns('.fechas').search(this.value).draw();

但是这并没有调用AJAX请求。它确实没有做任何事情。

  

如何触发ajax?我希望它在下拉列表中更改值后触发

在这种情况下,您希望在select元素的change事件中执行此操作。目前,您在此处执行AJAX请求:

$("form").submit(function () { 
    // AJAX
});

也就是说,您在表单提交事件中执行请求。只需将其添加到下拉列表的更改事件中:

$('#sel0').on('change', function () {
    dataTable.columns('.fechas').search(this.value).draw();

    $.ajax({
        url: '@Url.Action("MethodName","HomePosController")',
        type: 'POST',
        cache: false,
        data: { Selected: $("#sel0").val() },
        success: function (data) {
            //
        }
    });
});
  

页面没有刷新

嗯,不。这不会发生在AJAX请求中。目前您的success回调为空,因此页面上不会发生任何事情。无论你想发生什么,都需要进行回调。