【发布时间】: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