在这里,我尝试使用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();
});
});
});
_Results部分视图
@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中传递结果计数并在局部视图中使用
答案 0 :(得分:0)
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;
})
)
答案 1 :(得分:0)
您从未在调用Results部分视图之前调用GetRequestReport(),您如何期望获得传递到Results部分视图的count的值。请验证您的要求。