【问题标题】:Using Viewbag to View Search Query on Screen使用 Viewbag 在屏幕上查看搜索查询
【发布时间】:2015-06-26 15:03:24
【问题描述】:

我有这个视图,用户搜索特定的知识库文章,在结果视图的顶部,我想向用户展示他们的搜索条件是什么。所以我正在使用 viewbag 但它是空白的。

这是我的控制器代码:

public ActionResult UserSearchKnowledgebase(SearchKnowledgebase searchKnowledgebase)
        {


            var model = db.Knowledgebases.AsQueryable();
            if (searchKnowledgebase.CreatedById != Guid.Empty)
            {
                model = model.Where(k => k.CreatedById == searchKnowledgebase.CreatedById);
                ViewBag.Createdby = searchKnowledgebase.CreatedBy.FullName;
            }
            if (searchKnowledgebase.CategoryId != Guid.Empty)
            {
                model = model.Where(k => k.CategoryId == searchKnowledgebase.CategoryId);
                ViewBag.Category = searchKnowledgebase.Category.CategoryName;
            }
            model = model.OrderBy(k => k.CreatedDate);
            var result = model.ToList();

            return View("UserKnowledgebaseList", result);

        }

这是我的视图代码:

<h3>Knowledgebase: Category: @ViewBag.Category      Created by: @ViewBag.Createdby</h3>

这是我的 ViewModel 代码:

namespace HelpDesk.WebUI.ViewModel
{
    public class SearchKnowledgebase
    {

        [Display(Name = "Category")]
        public Guid CategoryId { get; set; }

        public virtual Category Category { get; set; }

        [Display(Name = "Created By")]
        public Guid CreatedById { get; set; }

        public virtual User CreatedBy { get; set; }

        [Display(Name = "Type")]
        public Guid TypeId { get; set; }

        public virtual Role Type { get; set; }

    }
}

我以为我想通了并尝试了这个,但仍然一无所获:

ViewBag.Category = db.Categories.Where(c => c.CategoryId == searchKnowledgebase.CategoryId).First().CategoryName;

【问题讨论】:

  • 空白意味着竞争空白h3??
  • Ehsan,不只是为了 viewbag 结果。因此,Category 这个词会出现,但 @viewbag.Category 不会出现。
  • 只是一个想法,但您确定 ViewBag.Createdby 和 .Category 值是单个项目(“字符串”等)吗?似乎您可以将 ViewBag 值设置为类型 IQueryable 或其他内容。
  • SearchKnowledgebase 只是用户选择要搜索的内容的视图模型。所以返回的值应该是单值字符串。但既然你这么说 - 他们在技术上返回这些字段的 ID。所以我需要把它们变成价值观。让我试试看。
  • 你能用 searchKnowledgebase.Category 结构更新你的问题吗?

标签: c# asp.net-mvc visual-studio razor view


【解决方案1】:

抱歉不能离开 cmets 所以我必须发布一个答案...你确定 CreatedByID 和 CategoryID 有值吗?也许它完全跳过了那段代码?如果您可以查看是否可以在该特定行上放置断点

【讨论】:

  • 是的,因为搜索部分已经基于这些字段工作。
  • 你能在该行放一个断点,看看代码是否运行?您应该能够看到值是什么
  • 代码,你是对的。奇怪的是它出现为空。现在我很困惑,因为它以前工作过。
  • 尝试在控制器开始时将一些测试值硬编码到 2 个 ViewBag 中(意味着将 ViewBag 变量从 if 语句中取出并放在控制器顶部).....ViewBag。 Createdby = "My Name" , ViewBag.Category = "Cat"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多