我的项目的一部分,我需要找到一种方法来搜索我的对象的字符串,并显示在视图中的结果。感谢您的帮助。 在我MainMedia
视图我有一个sidesection是我的字符串值手动传递到SearchMedia
方法:通过字符串值MVC搜索方法5
@section SideBar{
<ul>
<li> @Html.ActionLink("Astronomy", "SearchMedia", new {searchString = "Astronomy" })</li>
<li> @Html.ActionLink("World", "SearchMedia", new { searchString = "World" })</li>
<li> @Html.ActionLink("Movies", "SearchMedia", new { searchString = "Movies" })</li>
</ul>
}
此方法应该检查每个对象是否TagsEnum
字符串,然后在SearchMedia
视图中显示一个对象。
这里是我的传媒类
public class Media
{
public int Id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string body { get; set; }
public string ImagePath { get; set; }
public string VideoLink { get; set; }
public string Source { get; set; }
public string tags { get; set; }
public TagsEnum TagsEnum { get; set; }
}
TagsEnum类
public enum TagsEnum
{
[Display(Name = "Astronomy and space")]
Astronomy,
[Display(Name = "World around us")]
World,
[Display(Name = "Movies, video")]
Movies
}
和finaly MediaMainController
SearchMedia
方法
public ActionResult SearchMedia(string searchString)
{
db.Medias.Where(i => i.TagsEnum.ToString() == searchString);
return View(db.Medias.OrderBy(it => it.Title));
}
据我了解.Where()
应该找到一个匹配,并返回一个对象,但它不起作用。我如何解决它?也许还有其他方法可以做到这一点?谢谢
更新 我已经改变这样的:
var result = db.Medias.Where(TagsEnum => TagsEnum.ToString() == searchString);
return View(result.OrderBy(it => it.title));
,但我仍然没有看到结果被搜索排序
更新2 我有一个类MediaViewModel
我用于创建对象列表,如下所示:
public class MediaViewModel
{
public List<Media> media { get; set; }
public List<Video> video { get; set; }
}
如果我成立SearchMedia
查看这样
@model PhClub.Models.MediaViewModel
@foreach (var b in Model.media)
{}
我得到一个错误: 传递到字典的模型产品类型System.Linq.Enumerable的+ WhereListIterator 1 PhClub.Models.Media] ,但该字典需要PhClub.Models.MediaViewModel类型的模型项目。 如果我将其设置为
`@model IEnumerable<PhClub.Models.Media>
@foreach (var b in Model)
{}`
跟它型“媒体” 值不能转换为字符串。 我想我需要改变SearchMedia
方法来支持MediaView
类,但我还没有弄明白。帮助表示赞赏
“它不工作”是很少一个很好的问题陈述。你没有得到任何结果,或某种例外? –
它不排序结果,只是显示每个对象,就好像搜索方法没有启动 –
您没有使用where子句的结果。在你的return语句中,你只是对媒体表的整个DbSet进行排序。 @sajeetharan的答案纠正了这一点。 –