ASP.NET?MVC實(shí)現(xiàn)多選下拉框保存并顯示
在"ASP.NET MVC實(shí)現(xiàn)多選下拉框"中,主要是多選下拉框的顯示,而實(shí)際情況通常是:選擇多個(gè)選項(xiàng)提交后,需要在編輯頁(yè)把所有選中的項(xiàng)顯示出來(lái)。
模擬這樣的一個(gè)場(chǎng)景:一個(gè)車(chē)迷可能有多個(gè)自己喜歡的汽車(chē)品牌。
關(guān)于車(chē)迷的Model:
namespace MvcApplication1.Models { public class CarFan { public int Id { get; set; } public string Name { get; set; } public string[] SelectedCars { get; set; } } }
以上,在"ASP.NET MVC實(shí)現(xiàn)多選下拉框"中也提到了,當(dāng)我們通過(guò)<select multiple="multiple"...></select>顯示多選下拉框的時(shí)候,其對(duì)應(yīng)的Model屬性類(lèi)型一定是string[]。
關(guān)于汽車(chē)品牌的Model:
namespace MvcApplication1.Models { public class Car { public int Id { get; set; } public string Name { get; set; } } }
創(chuàng)建FanController:
using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { public class FanController : Controller { public ActionResult SaveCars() { var carFan = new CarFan() {Id = 1, Name = "Darren", SelectedCars = {}}; ViewBag.allcars = GetAllCars(); return View(carFan); } [HttpPost] public ActionResult SaveCars(CarFan carFan) { //if (ModelState.IsValid) //{ // foreach (var item in carFan.SelectedCars) // { // //TODO:把選中的Car的編號(hào)和CarFan保存到中間表 // } //} ViewBag.allcars = GetAllCars(); return View(carFan); } private IEnumerable<SelectListItem> GetAllCars() { List<SelectListItem> allCars = new List<SelectListItem>(); allCars.Add(new SelectListItem() { Value = "1", Text = "奔馳" }); allCars.Add(new SelectListItem() { Value = "2", Text = "寶馬" }); allCars.Add(new SelectListItem() { Value = "3", Text = "奇瑞" }); allCars.Add(new SelectListItem() { Value = "4", Text = "比亞迪" }); allCars.Add(new SelectListItem() { Value = "5", Text = "起亞" }); allCars.Add(new SelectListItem() { Value = "6", Text = "大眾" }); allCars.Add(new SelectListItem() { Value = "7", Text = "斯柯達(dá)" }); allCars.Add(new SelectListItem() { Value = "8", Text = "豐田" }); allCars.Add(new SelectListItem() { Value = "9", Text = "本田" }); return allCars.AsEnumerable(); }
顯示<select multiple="multiple"...></select>的時(shí)候,需要一個(gè)IEnumerable<SelectListItem>類(lèi)型的集合,我們通過(guò)ViewBag把該類(lèi)型集合傳遞到前臺(tái)視圖。
打上[HttpPost]的SaveCars(CarFan carFan)方法內(nèi)部,在實(shí)際項(xiàng)目中,本該是需要遍歷所有選中汽車(chē)品牌的Id,把CarFan的Id和汽車(chē)品牌的Id保存到兩者的中間表的,但這里為了方便,保存成功后還是回到原先的/Fan/SaveCars.cshtml視圖,把選中的項(xiàng)顯示出來(lái)。
/Fan/SaveCars.cshtml 視圖
@model MvcApplication1.Models.CarFan @{ ViewBag.Title = "SaveCars"; Layout = "~/Views/Shared/_Layout.cshtml"; } <link href="~/Content/chosen.css" rel="external nofollow" rel="stylesheet" /> <h2>@Model.Name 感興趣的汽車(chē)品牌包括:(最多選擇2個(gè))</h2> @using (Html.BeginForm("SaveCars", "Fan", FormMethod.Post, new {id="editForm"})) { @Html.ListBoxFor(m => m.SelectedCars, (IEnumerable<SelectListItem>)ViewBag.allcars, new {@class="chosen", multiple="multiple", style="width:350px;"}) <br/> <input type="submit" value="提交"/> } @section scripts { <script src="~/Scripts/chosen.jquery.min.js"></script> <script type="text/javascript"> $(function() { $('.chosen').chosen({ max_selected_options: 2 }); $(".chosen-deselect").chosen( { allow_single_deselect: true }); $(".chosen").chosen().change(); $(".chosen").trigger('liszt:updated'); }); </script> }
運(yùn)行,在沒(méi)有選擇任何項(xiàng)時(shí)的界面如下:
當(dāng)選擇項(xiàng),提交后,重新返回/Fan/SaveCars.cshtml視圖,界面如下:
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
ASP.NET中后臺(tái)注冊(cè)js腳本使用的方法對(duì)比
接下來(lái)為大家介紹下使用Page.ClientScript.RegisterClientScriptBlock 和Page.ClientScript.RegisterStartupScript:區(qū)別2013-04-04ASP.NET?Core中Razor頁(yè)面與MVC區(qū)別介紹
這篇文章介紹了ASP.NET?Core中Razor頁(yè)面與MVC的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02ASP.NET(VB)寫(xiě)的后臺(tái)發(fā)送短信實(shí)現(xiàn)代碼
使用vb寫(xiě)的后臺(tái)發(fā)送短信代碼,很實(shí)用的一項(xiàng)功能,感興趣的朋友可以了解下,或許對(duì)你學(xué)習(xí)asp.net vb有所幫助2013-02-02MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢(xún)條件分頁(yè)
這篇文章主要介紹了MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢(xún)條件分頁(yè),需要的朋友可以參考下2017-05-05在Repeater控件中通過(guò)Eval的方式綁定Style樣式代碼
這篇文章主要介紹了如何在Repeater控件中通過(guò)Eval的方式綁定Style樣式,需要的朋友可以參考下2014-04-04ASP.NET與ASP互通COOKIES的一點(diǎn)經(jīng)驗(yàn)
ASP與ASP.NET互相整合時(shí),其中文COOKIES信息無(wú)法被互通共享,當(dāng)使用ASP.NET寫(xiě)入中文COOKIES信息后,使用ASP進(jìn)行讀取,讀出來(lái)的卻是亂碼,而非中文。2010-03-03涉及網(wǎng)絡(luò)編程時(shí),需要用到的幾個(gè)常用方法
涉及網(wǎng)絡(luò)編程時(shí),需要用到的幾個(gè)常用方法...2006-09-09注冊(cè)或者點(diǎn)擊按鈕時(shí),怎么防止用戶重復(fù)提交數(shù)據(jù)(實(shí)例講解)
這篇文章主要是對(duì)注冊(cè)或者點(diǎn)擊按鈕時(shí),怎么防止用戶重復(fù)提交數(shù)據(jù)進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12asp.net實(shí)現(xiàn)批量刪除實(shí)例
這篇文章主要介紹了asp.net實(shí)現(xiàn)批量刪除的方法,需要的朋友可以參考下2014-08-08