ASP.NET?MVC實(shí)現(xiàn)多選下拉框保存并顯示
在"ASP.NET MVC實(shí)現(xiàn)多選下拉框"中,主要是多選下拉框的顯示,而實(shí)際情況通常是:選擇多個(gè)選項(xiàng)提交后,需要在編輯頁把所有選中的項(xiàng)顯示出來。
模擬這樣的一個(gè)場景:一個(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)我們通過<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>類型的集合,我們通過ViewBag把該類型集合傳遞到前臺(tái)視圖。
打上[HttpPost]的SaveCars(CarFan carFan)方法內(nèi)部,在實(shí)際項(xiàng)目中,本該是需要遍歷所有選中汽車品牌的Id,把CarFan的Id和汽車品牌的Id保存到兩者的中間表的,但這里為了方便,保存成功后還是回到原先的/Fan/SaveCars.cshtml視圖,把選中的項(xiàng)顯示出來。
/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)行,在沒有選擇任何項(xiàng)時(shí)的界面如下:

當(dāng)選擇項(xiàng),提交后,重新返回/Fan/SaveCars.cshtml視圖,界面如下:

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
ASP.NET Core使用微軟官方類庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音
這篇文章主要為大家詳細(xì)介紹了ASP.NET Core使用微軟官方類庫實(shí)現(xiàn)漢字轉(zhuǎn)拼音,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
asp.net后臺(tái)如何動(dòng)態(tài)添加JS文件和css文件的引用
動(dòng)態(tài)添加JS文件和css文件的引用在asp.net后臺(tái)如何實(shí)現(xiàn)呢?首先添加命名空間 using System.Web.UI.HtmlControls,之后按照下面的步驟操作即可2014-09-09
ASP.NET 2.0/3.5中直接操作Gridview控件插入新記錄
Gridview控件中并沒有提供像在FormView和DetailsView控件中那樣直接插入新記錄操作的支持。2008-11-11
輕量級(jí)ORM框架Dapper應(yīng)用之返回多個(gè)結(jié)果集
這篇文章介紹了使用Dapper返回多個(gè)結(jié)果集的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
通過HttpClient 調(diào)用ASP.NET Web API示例
本篇文章主要介紹了通過HttpClient 調(diào)用ASP.NET Web API示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
ASP.NET Core中使用令牌桶限流的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core中使用令牌桶限流的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04

