我正在尝试使用Ajax调用刷新DisplayController中的局部视图。我对JS不太熟悉,我想知道如何将参数传递到我的GetModel()方法中。我希望该参数以ViewModel或字符串的形式代表KendoDropDown中的内容。
我尝试将不同的内容传递到“数据:”字段中。通过这种当前设置,我可以将其传递给DisplayViewModel,但是该视图模型为null,几乎没有用。
function OnClose() {
var chart = $("#safetyIncident-chart").data("kendoChart");
$.ajax({
url: "Display/GetModel",
type: "get",
data: $("form").serialize(),
success: function (result) {
$("#partial").html(result);
}
});
chart.dataSource.read();
}
public ActionResult GetModel(DisplayViewModel dvm)
{
return View(dvm);
}
我希望能够将基于DropDownPicker中的参数传递给我的GetModel方法。谢谢!
编辑:
我想澄清一下,我想知道要在“数据:”字段中输入什么。当前代码是唯一不会破坏我的下拉列表的方法,但是这种方法仍然无法为我提供有用的信息。我想知道如何用有用的信息填充或将其更改为有用的信息。
编辑:
为了防万一,我将添加我的DropDownValue()JS方法。
function DropDownValue() {
var value = $("#productionLine-dropdown").data("kendoDropDownList").value();
return { selectProductionLine: value };
}
答案 0 :(得分:2)
事物的结合,首先,您需要指定type: "get"
至type: "post"
,因为要将表单数据发布到控制器。其次,您需要在AJAX
中捕获表单数据变量,并将其发送到Controller
方法中。我给你一个简单的例子,说明如何实现这一目标:
<script type="text/javascript">
function OnClose() {
var chart = $("#safetyIncident-chart").data("kendoChart"); //For your chart
var value = $("#productionLine-dropdown").data("kendoDropDownList").value(); //Dropdown value
var json = {
chart: chart,
value:value
};
$.ajax({
url: '@Url.Action("GetModel", "Display")',
type: 'post',
dataType: "json",
data: { "json": JSON.stringify(json)},
success: function (result) {
$("#partial").html(result);
},
error: function (error) {
console.log(error)
}
});
chart.dataSource.read();
}
</script>
您的Controller
方法如下:
using System.Web.Script.Serialization;
[HttpPost]
public ActionResult GetModel(string json)
{
var serializer = new JavaScriptSerializer();
dynamic jsondata = serializer.Deserialize(json, typeof(object));
//Get your variables here from AJAX call
var chart= jsondata["chart"];
var value=jsondata["value"];
//Do something with your variables here
return Json("Success");
}
答案 1 :(得分:1)
您无法通过get方法将模型传递给行动 您必须将类型更改为'post'并添加
[HttpPost]
GetModel操作上方的属性