在这里,我尝试使用TempData将数据从控制器操作方法传递到局部视图。但这行不通。

我的控制器代码

public class PropertyController : Controller
{
    public ActionResult Index()
    {
        return View();
    }


    public ActionResult GetRequestReport()
    {
        List<ReportsInfo> reportsList = reportsManager.GetRequestReport(UserName, Locality, "usp_GetResults");
    int count = reportsList.Select(x => x.UserId).Distinct().Count();
    TempData["Count"] = count;
        return PartialView("_Partial1", reportsList);
    }

    public ActionResult Test(string id)
    {
        switch (id)
        {
            case "tab1":
                return PartialView("_Results");
            case "tab2":
                return PartialView("_Results2");
        }

        return new EmptyResult();
    }

}


Index.cshtml

<div id="div-for-partial">
                </div>


    $(function () {
        $('.tab').click(function () {
            var id = this.id;
            $.get('@Url.Action("Test")', { "id": id }, function (data) {
                $('#div-for-partial').html(data);
                $('.mvc-grid').mvcgrid();
            });
        });
    });


_结果局部视图

   @TempData["Count"]
<br />
 <div id="reportList">
                    @Html.AjaxGrid(Url.Action("GetRequestReport", "Property"))
                </div>


_Partial1局部视图

@model Project.Models.ReportsInfo
@(
        Html.Grid(Model)
            .Build(columns =>
            {

                columns.Add(model => model.ApproverName).Titled("Approver Name");

            })
            .Empty("No records found.")
            .Sortable()
            .Pageable(pager =>
            {
                pager.RowsPerPage = 15;
            })
)


我什至尝试过查看包,但没有运气可以实现它。基本上我想在TempData中传递结果计数并在局部视图中使用

最佳答案

public ActionResult GetRequestReport()
    {
        List<ReportsInfo> reportsList = reportsManager.GetRequestReport(UserName, Locality, "usp_GetResults");
    int count = reportsList.Select(x => x.UserId).Distinct().Count();
    ViewData["Count"] = count;
        return PartialView("_Partial1");
    }


在Partial1部分视图中,您可以在count变量中获得count,如下所示,并可以在任何需要的地方使用它。

@(
        int count=(int)ViewData["Count"];

        Html.Grid(Model)
            .Build(columns =>
            {

                columns.Add(model => model.ApproverName).Titled("Approver Name");

            })
            .Empty("No records found.")
            .Sortable()
            .Pageable(pager =>
            {
                pager.RowsPerPage = 15;
            })
)

关于javascript - 如何将值从 Controller Action 方法传递到局部 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51772140/

10-12 02:54