簡體   English   中英

ASP.NET MVC 5 站點 - 編輯視圖未選擇 DropDownListFor 中的項目

[英]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; }
}

我有幾個要求。

  • 編輯故事時,我希望顯示所有地點的下拉列表 - 並選擇相關地點(如果有)。
  • 我想使用強類型 DropDownListFOR(而不是 DropDownList)。
  • 我想添加一個“No Associated Place”,如果 PlaceId 為 null(並且應該將 null 傳回模型),它將被選中。
  • 我想在 DropDownListFor 中添加一個 css class = "form-control"。

控制器(獲取)

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM