我在下拉列表中获得价值,当用户从下拉列表中选择任何值时,我想在控制器中获取所选值。我的观点是 -
@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();
}
}
但我没有任何价值。另外,我不想使用任何提交按钮。
提前致谢
答案 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);
}
})
});
};