[英]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
以便允許用戶選擇“一個”或“一個” Program
“ Playlist
。
例如:
程序1:
選擇播放列表:播放列表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)
這樣可以很好地顯示列表,並預先選擇選定的播放列表(如果沒有)(如果沒有,我將為其編寫代碼以默認為第一個)。 如果程序中沒有播放列表,則很容易控制。
但是,問題:
沒有引發任何錯誤,除了最重要的部分-更新數據庫之外,其他所有內容似乎都可以正常工作。
確保沒有@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.