【问题标题】:Assign a Viewbag from an @HTML.Action request从 @HTML.Action 请求分配一个 Viewbag
【发布时间】:2014-12-05 10:57:32
【问题描述】:

当请求页面时,我正在触发 DevExpress Gridivew

@Html.Action("ActionName") 

在此 Actionesult 方法中,代码填充了 gridview,我想使用 viewbag 来显示网格内的项目总数。

// we have the row count - so assign it. 
ViewBag.NoOpenItems = List<People>.Count;

return PartialView("GridView", List<People>);

因此,一旦填充了网格并分配了 viewbag,viewbag 就不会在其中显示任何内容。

<h5>Total @ViewBag.NoOpenItems</h5> 

但是,当我在页面加载时为主 GET Action 方法内的 viewbag 分配一个值时,viewbag 值会正确显示在页面上,所以我猜测它与在 action 方法内分配 viewbag 有关系吗? - 实际上,当我写这篇文章时,我猜问题在于返回 PartialView 的操作方法?

如果是这样,有谁知道我怎样才能实现我喜欢做的事情?

【问题讨论】:

  • List&lt;object&gt;.Count 不是有效的 C# 语法。
  • 我知道.... 上面的代码说明了我是如何设置 viewbag 的,因此使用来自 IList.count 但这不是重要的语法。
  • 创建一个 ViewModel 并设置它的属性并将该模型传递给视图
  • 我同意这一点,这是我通常做的,但对于这么小的添加,我喜欢使用viewbag

标签: c# html asp.net-mvc viewbag actionmethod


【解决方案1】:

如果ModelList&lt;T&gt;,可以直接在View中使用,而不是放入ViewBag

@model List<People>

@if(Model != null)
{
<h5>Total @Model.Count</h5>
}

或:

<h5> @(Model != null ? Model.Count : 0)</h5>

【讨论】:

  • 我喜欢这个想法,但我就是这样做的,在返回 PartialView 之前分配计数不会再次触发该代码,因此 @Model 将始终为 NULL
【解决方案2】:

您可以使用 Gridivew Pager 属性来显示没有记录

settings.SettingsPager.Position = PagerPosition.TopAndBottom;
    settings.SettingsPager.FirstPageButton.Visible = true;
    settings.SettingsPager.LastPageButton.Visible = true;
    settings.SettingsPager.PageSizeItemSettings.Visible = true;
    settings.SettingsPager.PageSizeItemSettings.Items = new string[] { "10", "20", "50" };

更多信息您可以访问Devexpress GridView page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2018-03-13
    • 1970-01-01
    • 2019-11-13
    • 2016-05-12
    相关资源
    最近更新 更多