asp.net-mvc – 如何使用带有IEnumerable的Html.CheckBox(list)和验证
发布时间:2020-09-02 01:10:38 所属栏目:asp.Net 来源:互联网
导读:我正在一个页面上,用户需要填写一些信息,最后选择一个或多个带有复选框的客户. 客户列表是IEnumerable Customer我传入我的模型.我如何使用.CheckBoxFor()创建复选框列表? 最后,我希望能够验证是否已选择至少1个复选框. 请求是保存用户输入的信息的对象. % fo
|
我正在一个页面上,用户需要填写一些信息,最后选择一个或多个带有复选框的客户. 客户列表是IEnumerable< Customer>我传入我的模型.我如何使用.CheckBoxFor()创建复选框列表? 最后,我希望能够验证是否已选择至少1个复选框. 请求是保存用户输入的信息的对象. <% foreach (var customer in Model.Request.Customers) { %>
<%= Html.CheckBoxFor(/* customer */) %>
<% } %>
谁能指出我正确的方向?或者我这样做是错的? 解决方法您可以创建一个自定义html扩展类并重载CheckBoxFor方法,如下所示.该方法将metadata.Model计算为传递给它的值(如美国州).您可以从ControllerAction中的FormCollection获取复选框值:public ActionResult Edit(FormCollection formCollection)
{
// Get the value(s)
string checkBox = formCollection["State"];
// perform validation
....
}
示例假定keyvaluepair通用列表 <% foreach (var element in UnitedStatesDictionary())
{ %>
<%= Html.CheckBoxFor(model => model.State,null,element.Key) %><%= element.Value %><br />
<% } %>
HtmlExtensions.cs using System;
using System.Linq;
using System.Linq.Expressions;
using System.Web.Mvc;
using System.Web.Routing;
public static class HtmlExtensions
{
/// <summary>
/// Checks the box for.
/// </summary>
/// <typeparam name="TModel">The type of the model.</typeparam>
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="html">The HTML.</param>
/// <param name="expression">The expression.</param>
/// <returns>Checkbox</returns>
public static MvcHtmlString CheckBoxFor<TModel,TValue>(this HtmlHelper<TModel> html,Expression<Func<TModel,TValue>> expression)
{
return CheckBoxFor(html,expression,new RouteDirection());
}
/// <summary>
/// Checks the box for.
/// </summary>
/// <typeparam name="TModel">The type of the model.</typeparam>
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="html">The HTML.</param>
/// <param name="expression">The expression.</param>
/// <param name="htmlAttributes">The HTML attributes.</param>
/// <returns>Checkbox</returns>
public static MvcHtmlString CheckBoxFor<TModel,TValue>> expression,object htmlAttributes)
{
return CheckBoxFor(html,htmlAttributes,"");
}
/// <summary>
/// Checks the box for.
/// </summary>
/// <typeparam name="TModel">The type of the model.</typeparam>
/// <typeparam name="TValue">The type of the value.</typeparam>
/// <param name="html">The HTML.</param>
/// <param name="expression">The expression.</param>
/// <param name="htmlAttributes">The HTML attributes.</param>
/// <param name="checkedValue">The checked value.</param>
/// <returns>Checkbox</returns>
public static MvcHtmlString CheckBoxFor<TModel,object htmlAttributes,string checkedValue)
{
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression,html.ViewData);
string htmlFieldName = ExpressionHelper.GetExpressionText(expression);
TagBuilder tag = new TagBuilder("input");
tag.Attributes.Add("type","checkbox");
tag.Attributes.Add("name",metadata.PropertyName);
if (!string.IsNullOrEmpty(checkedValue))
{
tag.Attributes.Add("value",checkedValue);
}
else
{
tag.Attributes.Add("value",metadata.Model.ToString());
}
if (htmlAttributes != null)
{
tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
}
if (metadata.Model.ToString() == checkedValue)
{
tag.Attributes.Add("checked","checked");
}
return MvcHtmlString.Create(tag.ToString(TagRenderMode.SelfClosing));
}
}
我在这里,这是我的美国名单,以完成代码: /// <summary>
/// United States dictionary.
/// </summary>
/// <returns>List of United States</returns>
public static List<KeyValuePair<string,string>> UnitedStatesDictionary()
{
var arrList = new List<KeyValuePair<string,string>>();
arrList.Add(new KeyValuePair<string,string>("AL","Alabama"));
arrList.Add(new KeyValuePair<string,string>("AK","Alaska"));
arrList.Add(new KeyValuePair<string,string>("AZ","Arizona" ));
arrList.Add(new KeyValuePair<string,string>("AR","Arkansas" ));
arrList.Add(new KeyValuePair<string,string>("CA","California" ));
arrList.Add(new KeyValuePair<string,string>("CO","Colorado" ));
arrList.Add(new KeyValuePair<string,string>("CT","Connecticut" ));
arrList.Add(new KeyValuePair<string,string>("DE","Delaware" ));
arrList.Add(new KeyValuePair<string,string>("DC","District Of Columbia" ));
arrList.Add(new KeyValuePair<string,string>("FL","Florida" ));
arrList.Add(new KeyValuePair<string,string>("GA","Georgia" ));
arrList.Add(new KeyValuePair<string,string>("HI","Hawaii" ));
arrList.Add(new KeyValuePair<string,string>("ID","Idaho" ));
arrList.Add(new KeyValuePair<string,string>("IL","Illinois" ));
arrList.Add(new KeyValuePair<string,string>("IN","Indiana" ));
arrList.Add(new KeyValuePair<string,string>("IA","Iowa" ));
arrList.Add(new KeyValuePair<string,string>("KS","Kansas" ));
arrList.Add(new KeyValuePair<string,string>("KY","Kentucky" ));
arrList.Add(new KeyValuePair<string,string>("LA","Louisiana" ));
arrList.Add(new KeyValuePair<string,string>("ME","Maine" ));
arrList.Add(new KeyValuePair<string,string>("MD","Maryland" ));
arrList.Add(new KeyValuePair<string,string>("MA","Massachusetts" ));
arrList.Add(new KeyValuePair<string,string>("MI","Michigan" ));
arrList.Add(new KeyValuePair<string,string>("MN","Minnesota" ));
arrList.Add(new KeyValuePair<string,string>("MS","Mississippi" ));
arrList.Add(new KeyValuePair<string,string>("MO","Missouri" ));
arrList.Add(new KeyValuePair<string,string>("MT","Montana" ));
arrList.Add(new KeyValuePair<string,string>("NE","Nebraska" ));
arrList.Add(new KeyValuePair<string,string>("NV","Nevada" ));
arrList.Add(new KeyValuePair<string,string>("NH","New Hampshire" ));
arrList.Add(new KeyValuePair<string,string>("NJ","New Jersey" ));
arrList.Add(new KeyValuePair<string,string>("NM","New Mexico" ));
arrList.Add(new KeyValuePair<string,string>("NY","New York" ));
arrList.Add(new KeyValuePair<string,string>("NC","North Carolina" ));
arrList.Add(new KeyValuePair<string,string>("ND","North Dakota" ));
arrList.Add(new KeyValuePair<string,string>("OH","Ohio" ));
arrList.Add(new KeyValuePair<string,string>("OK","Oklahoma" ));
arrList.Add(new KeyValuePair<string,string>("OR","Oregon" ));
arrList.Add(new KeyValuePair<string,string>("PA","Pennsylvania" ));
arrList.Add(new KeyValuePair<string,string>("RI","Rhode Island" ));
arrList.Add(new KeyValuePair<string,string>("SC","South Carolina" ));
arrList.Add(new KeyValuePair<string,string>("SD","South Dakota" ));
arrList.Add(new KeyValuePair<string,string>("TN","Tennessee" ));
arrList.Add(new KeyValuePair<string,string>("TX","Texas" ));
arrList.Add(new KeyValuePair<string,string>("UT","Utah" ));
arrList.Add(new KeyValuePair<string,string>("VT","Vermont" ));
arrList.Add(new KeyValuePair<string,string>("VA","Virginia" ));
arrList.Add(new KeyValuePair<string,string>("WA","Washington" ));
arrList.Add(new KeyValuePair<string,string>("WV","West Virginia" ));
arrList.Add(new KeyValuePair<string,string>("WI","Wisconsin" ));
arrList.Add(new KeyValuePair<string,string>("WY","Wyoming" ));
return arrList;
} (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET 5中添加一个TypeScript绝对类型的定义?
- asp.net-mvc – 如何在RegularExpression中忽略大小写?
- asp.net – 渗透测试人员说.ASPXAUTH cookie是不安全的并且
- asp.net mvc webapi 实用的接口加密方法示例
- asp.net – 增加IIS7 / Win7 Pro上的最大上传文件大小
- asp.net – 未知的服务器标签’ajaxToolkit:CalendarExten
- asp.net-mvc – MVC 5具有身份验证模式的外部身份验证=表单
- 如何排序. .NET中的resx(资源文件)
- ASP.Net下载大文件的实现方法
- asp.net-mvc – ASP.NET MVC:部分知道它是否是从另一个页面
推荐文章
站长推荐
- 下载期间的ASP.net内存使用情况
- asp.net – 在网站上放置广告的最佳做法?
- ASP.NET TextBox LostFocus事件
- asp.net-core – 如何使用ASP.NET注册OData 5
- asp.net – [DataType(DataType.EmailAddress)]和
- ASP.NET:隐藏gridview中的列
- asp.net-mvc-2 – ASP.NET MVC 2并列为隐藏值?
- asp.net – ASPXAUTH cookie未保存
- asp.net-mvc-3 – RedirectResult Object作为URL
- 在ASP.NET中,获取基本UR1请求的最快方法是什么?
热点阅读
