单击按钮时ASP.NET MVC局部视图刷新

时间:2015-07-30 21:54:21

标签: model-view-controller asp.net-mvc-partialview

我正在使用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的新手。请随时询问更多信息。 如果你向我提供代码,那就太棒了。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为您的问题是您发布了一个json对象,而您的post方法将SearchViewModel对象作为参数。

我相信如果你改变了这个

data: JSON.stringify(SearchViewModel)

到这个

data: $("#yourFormId").serialize()

您将获得预期的结果。