![](/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.