为什么我的动态viewdata没有列在我的局部视图中?

时间:2012-10-22 10:42:35

标签: asp.net-mvc asp.net-mvc-partialview

我已经从控制器传递了值

public ActionResult Index(int? Page, string sortcol="ID", string sortorder="ASC", string firstname = "", string lastname = "", string emailaddress = "")
{
     int TotalPages = 0;

        var userlist = ur.GetUsersList(firstname, lastname, emailaddress, Page ?? 1, PageSize,out TotalPages, sortcol, sortorder);

        ViewBag.PageIndex = 1;

        ViewData["TotalPages"] = TotalPages.ToString();

        if (Request.IsAjaxRequest())
        {
            return PartialView("ListUsers", userlist);
        }
        return View(userlist);
    }

在我的父视图中:

@Html.Partial("ListUsers", Model, ViewData)

在我的孩子视图中(listusers):

@ViewData["TotalPages"]

我无法获得Viewdata总页数的值。为什么会这样? 它总是返回零。

2 个答案:

答案 0 :(得分:2)

在这种情况下,不要使用View Data,您应该创建viewModel:

var model = new UsersViewModel
{
    Users = userList;
    TotalPages =TotalPages.ToString();
}

最后:

return View(model);

模特课:

public class UsersViewModel
{
    public IEnumerable<User> Users{ get; set; }
    public int TotalPages{ get; set; }
}

这是更优雅的解决方案。

答案 1 :(得分:0)

嘿,我认为此链接可以帮助您找到您真正想要的内容 When to use ViewBag, ViewData, or TempData in Mvc3