如何在控制器mvc c#中获取选定的索引更改值

时间:2016-03-30 09:34:38

标签: c# asp.net-mvc-4 razor

我在下拉列表中获得价值,当用户从下拉列表中选择任何值时,我想在控制器中获取所选值。我的观点是 -

@using (Html.BeginForm("ApReport", "Sales", FormMethod.Post))
{
    @Html.DropDownList("Ddl", null, "All", new { @class = "control-label"})

    @Html.Hidden("rddl")                                 
}

控制器 -

[HttpPost]
public ActionResult ApReport(ApReport Ddl)
{
  string Ddlvalue = string.Empty;
  if (Request.Form["rddl"] != null)
  {
    Ddlvalue = Request.Form["rddl"].ToString();
  }
}

但我没有任何价值。另外,我不想使用任何提交按钮。

提前致谢

1 个答案:

答案 0 :(得分:1)

使用Ajax可以让您作为开发人员更新主视图而无需重新加载整个页面,也可以在后台将数据发送到服务器。

这就是我完成这项任务的方式。

首先,我会在我的控制器中创建一个返回JsonResult的动作。这将返回一个JSON对象到您的调用jquery代码,您可以使用它来将值返回到您的视图中。以下是操作方法的示例。

[HttpGet]
public JsonResult YourActionName(string selectedValue) //Assuming key in your dropdown is string
{
    var result = DoYourCalculation(selectedValue);

    return Json(new { myResult = result }, JsonRequestBehavior.AllowGet);
}

现在,您需要添加jquery代码。我建议你把它放在你视图引用的单独的javascript文件中。

这是JQuery代码,在控制器中调用Action的ajax。对服务器的Ajax调用是由“更改”启动的。 DropDown的事件,在JQuery中处理,如下所示。

    $(function () {
        $(document)
            .on('change', '#Ddl', function(){
                var valueofDropDown = $(this).val();
                var url = '/YourControllerName/YourActionName';
                var dataToSend = { selectedValue: valueofDropDown }

                $.ajax({
                    url: url,
                    data: dataToSend,
                    type: 'GET',
                    success: function (dataReceived) {
                        //update control on View
                        var receivedValue = dataReceived.myResult ;
                        $('YourControlIDToUpdate').val(receivedValue);
                }
            })
        });
    };