我正在使用VS 2013,MVC 5。 以下是我的部分视图(_Sales.cshtml)的内容:
@model IEnumerable<SomeModel>
<div id="outer">
<div id="inner1">
@(Html.Kendo().Chart<SomeModel>(Model)
...
)
</div>
<div id="inner2">
<table>
<tr>
<td>Total Sales </td>
<td>@Model.First().TotalSales.ToString("C")</td>
</tr>
<tr>
<td>Total Discount </td>
<td>@Model.First().TotalDiscount.ToString("C")</td>
</tr>
</table>
</div>
</div>
以下是第一次加载时使用的操作方法:
public ActionResult _Sales()
{
IEnumerable<SomeModel> salesList = null;
SearchCriteriaObject criteria = null;
salesList = getting data as list;
return PartialView(salesList);
}
到目前为止,所有工作都按预期正常。我的部分视图可以使用初始数据进行渲染。
现在我的要求是我需要刷新我的部分视图,因为用户指定搜索条件并点击搜索按钮。
以下是搜索按钮的具体操作方法:
public ActionResult Get_BulletChartData_Updated(SearchViewModel criteriaModel)
{
IEnumerable<SomeModel> salesList = null;
SearchObject criteria = new SearchObject();
if (ModelState.IsValid)
{
if (criteriaModel != null)
{
//populating criteria here
}
salesList = //Getting data in list format
}
return PartialView(salesList);
}
在javascript中的搜索按钮单击事件处理程序中,我这样做:
$("#btnSearch").click(function () {
...
var Url = $('#Url').val(); //Getting action method url from hidden field
$.ajax({
type: "POST",
dataType: 'HTML',
data: JSON.stringify(SearchViewModel),
url: Url, //@Url.Action("Get_SalesDataFiltered", "Sales")
contentType: "application/json; charset=utf-8",
success: function (result)
{
alert('success');
//$("#outer").load(result);
},
error: function ()
{
alert("error");
}
});
在搜索按钮上单击,我总是收到错误警告消息。 能否指导我实现这一目标的正确方法。
我是MVC的新手。请随时询问更多信息。 如果你向我提供代码,那就太棒了。
感谢。
答案 0 :(得分:0)
我认为您的问题是您发布了一个json对象,而您的post方法将SearchViewModel
对象作为参数。
我相信如果你改变了这个
data: JSON.stringify(SearchViewModel)
到这个
data: $("#yourFormId").serialize()
您将获得预期的结果。