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è)車迷可能有多個(gè)自己喜歡的汽車品牌。
關(guān)于車迷的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屬性類型一定是string[]。
關(guān)于汽車品牌的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>類型的集合,我們通過(guò)ViewBag把該類型集合傳遞到前臺(tái)視圖。
打上[HttpPost]的SaveCars(CarFan carFan)方法內(nèi)部,在實(shí)際項(xiàng)目中,本該是需要遍歷所有選中汽車品牌的Id,把CarFan的Id和汽車品牌的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 感興趣的汽車品牌包括:(最多選擇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-04
ASP.NET?Core中Razor頁(yè)面與MVC區(qū)別介紹
這篇文章介紹了ASP.NET?Core中Razor頁(yè)面與MVC的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
ASP.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-02
MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁(yè)
這篇文章主要介紹了MVC+Bootstrap+Drapper使用PagedList.Mvc支持多查詢條件分頁(yè),需要的朋友可以參考下2017-05-05
在Repeater控件中通過(guò)Eval的方式綁定Style樣式代碼
這篇文章主要介紹了如何在Repeater控件中通過(guò)Eval的方式綁定Style樣式,需要的朋友可以參考下2014-04-04
ASP.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-12
asp.net實(shí)現(xiàn)批量刪除實(shí)例
這篇文章主要介紹了asp.net實(shí)現(xiàn)批量刪除的方法,需要的朋友可以參考下2014-08-08

