![](/img/trans.png)
[英]C# ASP.NET MVC 3 SQL database to html.dropdownlistfor and AutoPostBack to Browse action on selecting and item
[英]ASP.NET MVC 5 site - edit view not selecting item in DropDownListFor
我有一个 MVC 5 站点...
一个故事可以有选择地与一个 PlaceId 相关联。 空白的 placeId 也是有效的。 一个地方可以与多个故事相关联。
楷模
public class Place
{
public Guid Id { get; set; }
public string PlaceName { get; set; }
}
public class Story
{
public Guid Id { get; set; }
public Guid? PlaceId { get; set; }
public string StoryName { get; set; }
}
我有几个要求。
控制器(获取)
public ActionResult Edit(Guid Id)
{
// Get Story
var story = StoryRepo.SelectArticle(Id);
// Put select list of all places in ViewBag
ViewBag.PlaceId = new SelectList(PlaceRepo.SelectAll(), "Id", "PlaceName", new { Id = story.PlaceId });
// Return view
return View(story);
}
在视图中
@Html.DropDownListFor(x => x.PlaceId, (IEnumerable<SelectListItem>)ViewBag.PlaceId, "No Associated Place",
new { @class = "form-control" })
这会很好地填充下拉列表,当您选择一个项目时,PlaceId 位于绑定到控制器的模型中。 但是 - 它不会在视图加载时选择现有的 PlaceId。
ViewBag.PlaceId 行中的最后一个参数不应该是new { Id = story.PlaceId }
- 导致这个选择吗?
我在网上找不到关于这个特定问题的任何内容 - 并且几乎找不到关于如何以我需要的方式将下拉列表绑定到强类型编辑视图的信息。
我怎样才能让它选择正确的项目? (也对我如何做到这一点的任何改进也表示赞赏)。
谢谢。
我认为您需要更改以下代码
// Put select list of all places in ViewBag
ViewBag.PlaceId = new SelectList(PlaceRepo.SelectAll(), "Id",
"PlaceName", new { Id = story.PlaceId });
成为
// Put select list of all places in ViewBag
ViewBag.PlaceId = new SelectList(PlaceRepo.SelectAll(), "Id",
"PlaceName", story.PlaceId);
msdn 中SelectedList 的定义
SelectList(IEnumerable, String, String, Object):使用列表的指定项、数据值字段、数据文本字段和选定值初始化 SelectList 类的新实例。
这是一个工作演示
更新演示
希望能帮到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.