asp.net-mvc – MVC 4,复选框列表和我
发布时间:2020-05-24 05:25:30 所属栏目:asp.Net 来源:互联网
导读:全部早上 我可以看到这已经在其他地方讨论过,但是想知道如果有什么改变或者事情在MVC 4中比较简单,像我这样的单纯形? 脚本 我有以下,编辑,型号: public class CorporateDetails{ public Guid? Id { get; set; } [Key] public int CorporateDetailId { get;
|
全部早上 我可以看到这已经在其他地方讨论过,但是想知道如果有什么改变或者事情在MVC 4中比较简单,像我这样的单纯形? 脚本 我有以下,编辑,型号: public class CorporateDetails
{
public Guid? Id { get; set; }
[Key]
public int CorporateDetailId { get; set; }
public int? EmsId { get; set; }
public string EmsName { get; set; }
public virtual EmsType EmsType { get; set; }
}
public class EmsType
{
[Key]
public int? EmsId { get; set; }
public string EmsName { get; set; }
public virtual ICollection<EmsType> EmsTypes { get; set; }
}
使用以下标准创建视图: <fieldset>
<legend>CorporateDetails</legend>
<div class="editor-label">
@Html.LabelFor(model => model.EmsId,"EmsType")
</div>
<div class="editor-field">
@Html.DropDownList("EmsId",String.Empty)
@Html.ValidationMessageFor(model => model.EmsId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.EmsName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmsName)
@Html.ValidationMessageFor(model => model.EmsName)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
这给我开箱即用的一个美丽的下拉列表la Scott Gu’s blog 现在我真正的问题是这个 – 如何有效地将这个下拉框转换成什么将有效地成为一个多选,复选框列表? 再次,道歉过去,但我正在测试水,看是否有任何更新发生. 请注意,第一个MVC项目轻轻地走了,我又感觉很厚了:'( 解决方法好的,我已经把它排序了 – hurray!从评论中可以看出,有一些问题出现,但请在下面找到完整的解决方案:D模型 public class CorporateDetails
{
public Guid? Id { get; set; }
[Key]
public int CorporateDetailId { get; set; }
public int[] EmsId { get; set; }
}
public class EmsType
{
[Key]
public int EmsId { get; set; }
public string EmsName { get; set; }
public virtual ICollection<EmsType> EmsTypes { get; set; }
}
调节器 public ActionResult Create()
{
CorporateDetails corporatedetails = new CorporateDetails();
ViewBag.EmsId = new MultiSelectList(db.EmsTypes,"EmsId","EmsName");
return View(corporatedetails);
}
扩展(放置在项目根目录中的文件夹中) public static MvcHtmlString CheckBoxListFor<TModel,TProperty>(this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TProperty[]>> expression,MultiSelectList multiSelectList,object htmlAttributes = null)
{
//Derive property name for checkbox name
MemberExpression body = expression.Body as MemberExpression;
string propertyName = body.Member.Name;
//Get currently select values from the ViewData model
TProperty[] list = expression.Compile().Invoke(htmlHelper.ViewData.Model);
//Convert selected value list to a List<string> for easy manipulation
List<string> selectedValues = new List<string>();
if (list != null)
{
selectedValues = new List<TProperty>(list).ConvertAll<string>(delegate(TProperty i) { return i.ToString(); });
}
//Create div
TagBuilder divTag = new TagBuilder("div");
divTag.MergeAttributes(new RouteValueDictionary(htmlAttributes),true);
//Add checkboxes
foreach (SelectListItem item in multiSelectList)
{
divTag.InnerHtml += String.Format("<div><input type="checkbox" name="{0}" id="{0}_{1}" " +
"value="{1}" {2} /><label for="{0}_{1}">{3}</label></div>",propertyName,item.Value,selectedValues.Contains(item.Value) ? "checked="checked"" : "",item.Text);
}
return MvcHtmlString.Create(divTag.ToString());
}
扩展名注册在视图的Web配置中 <pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="MyProject.Extensions" />
</namespaces>
</pages>
视图 @model Valpak.Websites.HealthChecker.Models.CorporateDetails
@{
ViewBag.Title = "Create";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>CorporateDetails</legend>
<div class="editor-label">
@Html.CheckBoxListFor(model => model.EmsId,(MultiSelectList) ViewBag.EmsId)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List","Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
这给我一个可爱的复选框列表.欢呼! 感谢Darin你的帮助,我已经把这个标记为答案,但是你的时间和精力是50. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 应该将ASP.NET应用程序池设置为自动回收?
- asp.net-core – 在ASP.NET MVC Core中仍然存在ViewModel概
- asp.net-mvc – ASP.NET MVC身份默认实现
- asp.net-mvc – 使用Html.BeginForm()与自定义路由
- asp.net-identity – 为什么一个站点的ASP.NET身份登录可以
- ado.net – ASP.NET:如何从web.config ConnectionString创
- asp.net-mvc – Html.TextBoxFor在POST操作中不显示更新的值
- 使用ASP.Net MVC3中的jQuery动态填充下拉列表
- ASP.NET内置用户配置文件与旧stile用户类/表
- asp.net – 带LinqDataSource的DropDownList和一个空选项
推荐文章
站长推荐
- asp.net – 如何在Firefox上命名文件以供下载?
- asp.net – 使用Active Directory的REST API的授
- asp.net – 什么是Html.AntiForgeryToken帮助函数
- asp.net-mvc – 如何绘制密码字段就像我们绘制Em
- asp-classic – 如何使用经典asp中的vbscript下载
- asp.net-mvc – Html.TextBoxFor在POST操作中不显
- asp.net-mvc – 记录死亡的所有黄色屏幕,即使它是
- ASP.Net核心 – 获取帖子表格的所有数据
- asp.net-mvc – SSL安全SaaS应用程序的URL设计
- asp.net-mvc – 什么是AsyncManager.Outstanding
热点阅读
