簡體   English   中英

Dropdownlist ASP.NET MVC不更新模型

[英]Dropdownlist ASP.NET MVC not updating Model

我有兩個像這樣的Model類:

程序:

public class Program
{
    public int ProgramId { get; set; }

    public string Name { get; set; }

    public virtual Playlist chosenPlaylist { get; set; }

    public virtual IList<Playlist> Playlists { get; set; }
}

public class Playlist
{
    public int PlaylistId { get; set; }

    public string Name { get; set; }

    public int NumberVotes { get; set; }

    public virtual IList<Song> Songs { get; set; }
}

在我的“編輯程序視圖”中,我想更新chosenPlaylist以便允許用戶選擇“一個”或“一個” ProgramPlaylist

例如:

程序1:

  • 播放清單1
  • 播放清單2

選擇播放列表:播放列表1

這樣,用戶便可以編輯並選擇None(無播放列表),1(不會更改任何內容)或2,並將其保存到數據庫中。

我嘗試在Controller中創建一個下拉列表,但不會更新。

這是我的GET和POST Edit ActionResult的內容:

ViewBag.chosenId = new SelectList(program.Playlists, "PlaylistId",
"Name", program.chosenPlaylist.PlaylistId);

在我看來:

@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)

這樣可以很好地顯示列表,並預先選擇選定的播放列表(如果沒有)(如果沒有,我將為其編寫代碼以默認為第一個)。 如果程序中沒有播放列表,則很容易控制。

但是,問題:

  • 不更新我的模型。 例如,如果選擇了播放列表2,而我選擇了P1,則POST事件后它將繼續顯示P2。
  • 我想在下拉列表中包含一個選項,使其不選擇任何值(因此,在該字段中放置一個NULL)。 那可能嗎?

沒有引發任何錯誤,除了最重要的部分-更新數據庫之外,其他所有內容似乎都可以正常工作。

確保沒有@Html.HiddenFor或類似內容呈現同一項目。

您可以做兩件事:

@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)更改為@Html.DropDownList("chosenPlaylist.PlaylistId", (SelectList)ViewBag.chosenId)

或使用Html.DropDownListFor(m => m.chosenPlaylist.PlaylistId, (SelectList)ViewBag.chosenId))

使用時:

@Html.DropDownList("PlaylistId", (SelectList)ViewBag.chosenId)

您必須將PlaylistId選擇列表重命名為與存儲所選ID的屬性名稱不同的名稱,否則它將不會被標記為已選擇。

(現在輸入即時消息是有意義的,您不能將所選值存儲到與選擇列表相同的內容中)

基本上說:

@Html.DropDownList("MySelectListId", (SelectList)ViewBag.chosenId)

將工作。

您可以在codeplex上查看有關此問題的評論,以獲取更多信息: http : //aspnet.codeplex.com/workitem/4932

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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