網站首頁 編程語言 正文
在"ASP.NET MVC實現多選下拉框"中,主要是多選下拉框的顯示,而實際情況通常是:選擇多個選項提交后,需要在編輯頁把所有選中的項顯示出來。
模擬這樣的一個場景:一個車迷可能有多個自己喜歡的汽車品牌。
關于車迷的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實現多選下拉框"中也提到了,當我們通過<select multiple="multiple"...></select>顯示多選下拉框的時候,其對應的Model屬性類型一定是string[]。
關于汽車品牌的Model:
namespace MvcApplication1.Models
{
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
}
}
創建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的編號和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 = "斯柯達" });
allCars.Add(new SelectListItem() { Value = "8", Text = "豐田" });
allCars.Add(new SelectListItem() { Value = "9", Text = "本田" });
return allCars.AsEnumerable();
}
顯示<select multiple="multiple"...></select>的時候,需要一個IEnumerable<SelectListItem>類型的集合,我們通過ViewBag把該類型集合傳遞到前臺視圖。
打上[HttpPost]的SaveCars(CarFan carFan)方法內部,在實際項目中,本該是需要遍歷所有選中汽車品牌的Id,把CarFan的Id和汽車品牌的Id保存到兩者的中間表的,但這里為了方便,保存成功后還是回到原先的/Fan/SaveCars.cshtml視圖,把選中的項顯示出來。
/Fan/SaveCars.cshtml 視圖
@model MvcApplication1.Models.CarFan
@{
ViewBag.Title = "SaveCars";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<link href="~/Content/chosen.css" />
<h2>@Model.Name 感興趣的汽車品牌包括:(最多選擇2個)</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>
}
運行,在沒有選擇任何項時的界面如下:
當選擇項,提交后,重新返回/Fan/SaveCars.cshtml視圖,界面如下:
原文鏈接:https://www.cnblogs.com/darrenji/p/3838425.html
相關推薦
- 2022-11-03 關于golang?test緩存問題_Golang
- 2022-11-27 Python?OpenCV實現圖像增強操作詳解_python
- 2023-03-26 react組件實例屬性props實例詳解_React
- 2022-09-03 Python實現計算AUC的示例代碼_python
- 2022-08-30 python中Requests請求的安裝與常見用法_python
- 2024-02-16 springmvc中的數據提交方式
- 2022-08-21 Android使用貝塞爾曲線畫心形_Android
- 2022-09-25 CSS-元素隱藏的兩種主要方式
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支