您现在的位置是:网站首页> 编程资料编程资料
ASP.NET MVC扩展带验证的单选按钮_实用技巧_
2023-05-24
300人已围观
简介 ASP.NET MVC扩展带验证的单选按钮_实用技巧_
在ASP.NET MVC4中,HtmlHelper为我们提供了Html.RadioButton()方法用来显示Radio Button单选按钮。如果想显示一组单选按钮,通常的做法是遍历一个集合把每个单选按钮显示出来。本篇尝试写一个扩展方法用来展示一组带验证的单选按钮。

首先来扩展HtmlHelper,扩展方法中接收一个SelectListItem的集合,遍历这个集合把每个单选按钮显示出来,并且让这些单选按钮具有不同的id属性值。
using System.Collections.Generic; using System.Linq.Expressions; using System.Text; using System.Web.Mvc.Html; namespace System.Web.Mvc { public static class HtmlExtensions { public static MvcHtmlString RadioButtonListFor(this HtmlHelper htmlHelper, Expression> expression, IEnumerable list) { //获取元数据 var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); var sb = new StringBuilder(); if (list != null) { foreach (var item in list) { //把属性名和集合元素的Value值拼接作为元素的id var id = string.Format("{0}_{1}", metaData.PropertyName, item.Value); //创建单选按钮 var label = htmlHelper.Label(id, HttpUtility.HtmlEncode(item.Text)); var radio = htmlHelper.RadioButtonFor(expression, item.Value, new {id = id}).ToHtmlString(); sb.AppendFormat("{0}{1}", radio, label); } } return MvcHtmlString.Create(sb.ToString()); } } } 假设,现在有一个View Model,其中的一个属性要求必须。
using System.ComponentModel.DataAnnotations; namespace MvcApplication1.Models { public class Vm { [Required(ErrorMessage = "必填")] public int CityId { get; set; } } }以下City类的集合将作为所有Radio Button的数据源。
namespace MvcApplication1.Models { public class City { public int Id { get; set; } public string Name { get; set; } } }在HomeController中,提供一个Action方法啊,把City的集合转换成SelectListItem集合传递给视图。
using System.Collections.Generic; using System.Linq; using System.Web.Mvc; using MvcApplication1.Models; namespace MvcApplication1.Controllers { public class HomeController : Controller { public ActionResult Index() { List cities = new List() { new City(){Id = 1, Name = "青岛"}, new City(){Id = 2, Name = "济南"}, new City(){Id = 3, Name = "平度"} }; ViewData["c"] = from c in cities select new SelectListItem() {Text = c.Name, Value = c.Id.ToString()}; return View(new Vm()); } [HttpPost] public ActionResult Index(Vm vm) { if (ModelState.IsValid) { return Content(vm.CityId.ToString()); } else { return View(vm); } } } } 在_Layout.csthml中,必须具备客户端验证js。
@ViewBag.Title @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/jqueryval") @RenderBody() @RenderSection("scripts", required: false)
在Home/Index.chtml中,使用扩展方法显示Radio Button组。
@model MvcApplication1.Models.Vm @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @using (Html.BeginForm("Index", "Home", FormMethod.Post, new {id = "addForm"})) { @Html.RadioButtonListFor(v => v.CityId, ViewData["c"] as IEnumerable) @Html.ValidationMessageFor(v => v.CityId) } 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
您可能感兴趣的文章:
相关内容
- 使用EF Code First搭建简易ASP.NET MVC网站并允许数据库迁移_实用技巧_
- ASP.NET MVC实现横向展示购物车_实用技巧_
- ASP.NET MVC获取多级类别组合下的产品_实用技巧_
- ASP.NET MVC使用正则表达式验证手机号码_实用技巧_
- ASP.NET MVC实现登录后跳转到原界面_实用技巧_
- ASP.NET MVC使用jQuery的Load方法加载静态页面及注意事项_实用技巧_
- ASP.NET MVC解决上传图片脏数据的方法_实用技巧_
- ASP.NET MVC使用JSAjaxFileUploader插件实现单文件上传_实用技巧_
- asp.net core 认证和授权实例详解_实用技巧_
- .NET Core中使用gRPC的方法_实用技巧_
