C# MVC 5 EnumDropDownList用于实现
我需要为这个项目实现一个下拉框。我使用枚举类来填充它,下面是我的C# MVC 5 EnumDropDownList用于实现,c#,asp.net-mvc,enums,C#,Asp.net Mvc,Enums,我需要为这个项目实现一个下拉框。我使用枚举类来填充它,下面是我的 public class Media { public int Id { get; set; } public string title { get; set; } public string description { get; set; } public string tag { get; set; } public TagsEnum TagsEnum { get; set; } }
public class Media
{
public int Id { get; set; }
public string title { get; set; }
public string description { get; set; }
public string tag { get; set; }
public TagsEnum TagsEnum { get; set; }
}
和枚举类
public enum TagsEnum
{
Ecomomy,
Latest,
LocalNews,
Interesting,
WorldNews
}
创建方法
public ActionResult Create([Bind(Include = "Id,title,description,body,VideoLink, Source,tags")] Media media, HttpPostedFileBase file, int id = 0)
{
if (ModelState.IsValid)
{
if (file != null)
{
file.SaveAs(HttpContext.Server.MapPath("~/Images/")
+ file.FileName);
media.ImagePath = file.FileName;
}
db.Medias.Add(media);
db.SaveChanges();
return RedirectToAction("Index");
}
问题是,在我的创建视图中,我的下拉列表工作正常,代码如下:
<div class="form-group">
@Html.LabelFor(model => model.tags, "News Category", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EnumDropDownListFor(model => model.TagsEnum)
@Html.ValidationMessageFor(model => model.tags)
</div>
</div>
我在这里误解了什么,请帮忙。谢谢。问题在于如何在控制器操作结果中绑定媒体属性。Media类有一个属性public TagsEnum TagsEnum{get;set;},该属性已绑定到下拉列表,但在操作结果中未绑定该属性:
[Bind(Include = "Id,title,description,body,VideoLink, Source,tags")] Media media
这会导致TagsEnum值不会存储在数据库中,因此当您在媒体列表中检索它时,它只返回枚举的第一个值。您正在使用一系列其他字段,如VideoLink或标记,它们根本不是媒体的属性。这些将被忽略,但如果希望将TagsEnum分配给媒体变量,则必须按如下方式添加:
[Bind(Include = "Id,title,description,body,VideoLink, Source,tags, TagsEnum")] Media media
谢谢你们,我正在使用这些字段,我刚刚删除了它们以缩短课堂,但你们有一个很好的观点,我会尽快将其添加到媒体课堂。再次感谢!
[Bind(Include = "Id,title,description,body,VideoLink, Source,tags, TagsEnum")] Media media