【问题标题】:ASP.NET MVC partial view refresh on button clickASP.NET MVC 部分视图刷新按钮单击
【发布时间】:2015-07-30 21:54:21
【问题描述】:

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    我相信如果你改变这个

    data: JSON.stringify(SearchViewModel)
    

    到这里

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

    你会得到预期的结果。

    【讨论】:

      猜你喜欢
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 2014-05-18
      相关资源
      最近更新 更多