[英]How to pass value from controller action method to partial view
在這里,我嘗試使用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;
})
)
您從未在調用Results局部視圖之前調用過GetRequestReport(),您如何期望獲得傳遞給Results局部視圖的count值。 請驗證您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.