ASP.NET MVC框架是一个开源Web应用程序框架和工具,它实现了针对Web应用程序定制的模型 - 视图 - 控制器(MVC)模式的版本,并构建在ASP.NET技术基础之上。
我有一个解决方案,它由几个项目组成。 1.持久性,我有从数据库获取数据的类 Repository 和类 MyDbContext 2.控制器获取存储库类的API...
带有自定义参数的Html.DropDownListFor()
我想在 HTML 帮助器中添加扩展方法来生成这样的选择和选项 安道尔... 我想在 HTML 帮助程序中添加扩展方法来生成这样的选择和选项 <select id="Country" name="Country"> <option data-domain="AN" value="1">Andorra</option> <option data-domain="UI" value="2">United Arab Emirates</option> <option data-domain="AF" value="3">Afghanistan</option> 选项有一个数据域属性,我可以这样使用它 @Html.DropDownListFor(m => m.Country, Model.CountryList) Model.CountryList 是国家/地区变量的数组 class Country { public String Text { get; set; } public String Value { get; set; } public String Domain { get; set; } } 请谁能给出解决方案 您可以在自定义帮助器方法的帮助下构建您的CustomDropdownListFor,如下所示: 自定义辅助方法: public static class CustomHelpers { public class CustomSelectItem : SelectListItem { public string Class { get; set; } public string Disabled { get; set; } public string SelectedValue { get; set; } } public static MvcHtmlString CustomDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<CustomSelectItem> list, string selectedValue, string optionLabel, object htmlAttributes = null) { if (expression == null) { throw new ArgumentNullException("expression"); } ModelMetadata metadata = ModelMetadata.FromLambdaExpression<TModel, TProperty>(expression, htmlHelper.ViewData); string name = ExpressionHelper.GetExpressionText((LambdaExpression)expression); return CustomDropdownList(htmlHelper, metadata, name, optionLabel, list, selectedValue, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); } private static MvcHtmlString CustomDropdownList(this HtmlHelper htmlHelper, ModelMetadata metadata, string name, string optionLabel, IEnumerable<CustomSelectItem> list, string selectedValue, IDictionary<string, object> htmlAttributes) { string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); if (String.IsNullOrEmpty(fullName)) { throw new ArgumentException("name"); } TagBuilder dropdown = new TagBuilder("select"); dropdown.Attributes.Add("name", fullName); dropdown.MergeAttribute("data-val", "true"); dropdown.MergeAttribute("data-val-required", "Mandatory field."); dropdown.MergeAttribute("data-val-number", "The field must be a number."); dropdown.MergeAttributes(htmlAttributes); //dropdown.MergeAttributes(new RouteValueDictionary(htmlAttributes)); dropdown.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata)); StringBuilder options = new StringBuilder(); // Make optionLabel the first item that gets rendered. if (optionLabel != null) options.Append("<option value='" + String.Empty + "'>" + optionLabel + "</option>"); foreach (var item in list) { if (item.SelectedValue == "selected" && item.Disabled == "disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' selected='" + item.SelectedValue + "' disabled='" + item.Disabled + "'>" + item.Text + "</option>"); else if (item.SelectedValue != "selected" && item.Disabled == "disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' disabled='" + item.Disabled + "'>" + item.Text + "</option>"); else if (item.SelectedValue == "selected" && item.Disabled != "disabled") options.Append("<option value='" + item.Value + "' class='" + item.Class + "' selected='" + item.SelectedValue + "'>" + item.Text + "</option>"); else options.Append("<option value='" + item.Value + "' class='" + item.Class + "'>" + item.Text + "</option>"); } dropdown.InnerHtml = options.ToString(); return MvcHtmlString.Create(dropdown.ToString(TagRenderMode.Normal)); } } 视图(剃须刀): @Html.CustomDropdownListFor(m => m.PersonId, ViewBag.PersonData as List<CustomHelpers.CustomSelectItem>, null, "---- Select ----", new { name = "personId", id = "personId"}) @Html.ValidationMessageFor(m => m.PersonId, null , new { @class = "ValidationErrors" }) 标准 DropDownList/DropDownListFor 助手不支持此功能。如果您需要此类功能,则必须从头开始编写自定义 HTML 帮助程序。您可以查看这个示例。还有另一个。 方法: public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListCodeItem> selectList) { var select = new TagBuilder("select"); var options = ""; TagBuilder option; foreach (var item in selectList) { option = new TagBuilder("option"); option.MergeAttribute("value", item.Value.ToString()); option.MergeAttribute("data-domain", item.Code.ToString()); option.SetInnerText(item.Text); options += option.ToString(TagRenderMode.Normal) + "\n"; } select.MergeAttribute("data-val", "true"); select.MergeAttribute("data-val-required", "The field is required."); select.MergeAttribute("id", name); select.MergeAttribute("name", name); select.InnerHtml = options; return new MvcHtmlString(select.ToString(TagRenderMode.Normal)); } 致电: @Html.DropDownList("name" Model.OrganizationTypeList) 稍微重构 Murat 的答案 public static class MvcHelpers { public class CustomSelectItem : SelectListItem { public string Class { get; set; } } public static MvcHtmlString CustomDropdownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<CustomSelectItem> list, string selectedValue, string optionLabel, object htmlAttributes = null) { if (expression == null) { throw new ArgumentNullException(nameof(expression)); } var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); var name = ExpressionHelper.GetExpressionText(expression); return CustomDropdownList(htmlHelper, metadata, name, optionLabel, list, selectedValue, HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes)); } private static MvcHtmlString CustomDropdownList(HtmlHelper htmlHelper, ModelMetadata metadata, string name, string optionLabel, IEnumerable<CustomSelectItem> list, string selectedValue, IDictionary<string, object> htmlAttributes) { var fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name); if (string.IsNullOrWhiteSpace(fullName)) { throw new ArgumentException("Name cannot be null or empty.", nameof(name)); } var dropdown = new TagBuilder("select") { Attributes = { { "name", fullName }, { "data-val", "true" }, { "data-val-required", "Mandatory field." }, { "data-val-number", "The field must be a number." } } }; dropdown.MergeAttributes(htmlAttributes); dropdown.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata)); var options = new StringBuilder(); if (!string.IsNullOrEmpty(optionLabel)) { options.Append($ "<option value=''>{optionLabel}</option>"); } foreach (var item in list) { options.Append(CreateOption(item)); } dropdown.InnerHtml = options.ToString(); return MvcHtmlString.Create(dropdown.ToString(TagRenderMode.Normal)); } private static string CreateOption(CustomSelectItem item) { var disabledAttribute = item.Disabled ? "disabled" : string.Empty; var selectedAttribute = item.Selected ? "selected" : string.Empty; return $"<option value='{item.Value}' class='{item.Class}' {disabledAttribute} {selectedAttribute}>{item.Text}</option>"; } }
将 ASP.NET MVC 与 Angular 2 RC 6 结合使用(最终版)
我在使用 ASP.NET MVC 配置 Angular 2 RC 6(最终版)时遇到问题。在 beta 17 之前,一切都运行良好。 具有以下配置的 package.json 似乎不起作用: ”
替代 aspnetcore 中的 System.Web.Security.Membership.GeneratePassword (netcoreapp1.0)
AspNetCore(netcoreapp1.0)中是否有 System.Web.Security.Membership.GeneratePassword 的替代方案。 最简单的方法是使用足够长的 Guid.NewGuid().ToString("n") ...
我正在尝试使用.NET将以下网页转换为PDF文档: https://www.sec.gov/ix?doc=/Archives/edgar/data/55242/000005524224000055/kmt-20240630.htm 有人可以告诉我该怎么做吗?我试过了
我正在尝试在我的 MVC 应用程序中执行代码,在我的 Web 应用程序中,用户在登录时必须先验证他们的电话号码,然后才能单击我的应用程序中的任何菜单...
我制作.Net MVC应用程序,使用DropBox作为文件存储。 我成功地从我的应用程序将文件上传到 DropBox,但我得到的令牌有效期很短,每 4 小时就会过期。我需要一些
问题 我们在解决方案中使用配置转换。例如:调试、测试、登台、发布 但是,这些配置仅用于我们的 MVC 项目。所有的图书馆只使用...
我正在尝试在页面中加载1K数据并用jquery数据表显示它。因为页面是人员列表。最终用户希望在没有任何过滤器的情况下搜索它。 什么是最好的
我对asp.net非常陌生,最近我遇到了这个异常: 系统无效操作异常 异常的详细信息如下: 尚未为此应用程序配置会话或
使用控制器和视图在 MVC ASP.NET Core 中进行路由
我仍在尝试探索路由,但我无法完成工作。我对如何使用视图和控制器感到困惑,我试图实现像 http://localhost:5036/Dashboard/Products
ErroCS1929“IHtmlHelper<IPagedList<Book>>”不包含“PagedListPager”的定义
这是完整的错误 错误CS1929“IHtmlHelper”不包含“PagedListPager”的定义和最佳扩展方法重载“HtmlHelper.PagedListPager(HtmlHelper,
使用 NAnt 中的 ASP 编译器构建 ASP .Net MVC 应用程序
作为我的持续集成过程的一部分,我使用 ASP 编译器在 NAnt 中成功构建了 ASP .Net 应用程序,没有出现任何问题。 然而,如果我在 A 上尝试完全相同的过程......
我正在尝试将我的宠物项目 Docker 化到微服务架构上。我有几个微服务、一个客户端和 duende 身份服务器。在本地,在我的机器上,客户端直接与...
我需要处理调用我的 API(分页)时返回的结果量。我在使用最新的 mongo c# 驱动程序中的新异步内容来实现这一点时遇到了真正的困难。
F5 负载均衡器背后的 MVC 应用程序的会话超时问题需要有关会话持久性设置的建议
我有两台服务器在 F5 负载均衡器后面运行相同的 MVC Web 应用程序。尽管在 IIS 中正确配置了会话超时,但会话仅在用户使用几分钟后就会过期
为什么我的 Inventory.cshtml 没有从控制器或模型接收或发送任何内容。在 ASP.NET MVC 中
我正在尝试修复所有可能出现错误的命名空间中的所有拼写错误。但此时我没有从控制台或终端收到任何错误,因此我找不到问题。问题是我...
如何指定应输入到文本框中的值。我不想使用下拉列表。我只想接受这三 (3) 个值 尼日利亚、加纳和多哥 如果输入任何其他值...
如何仅在 1 个文档中编译更改,但保留其他文档的原始版本? (C#、Asp.Net MVC)
我有本地安装和实时安装。我的实时安装正在运行,除了我更改了通过 [Authorize(Roles = "Admin, Host")] 限制的方法之一,我想删除它,但我需要...
我想使用参数 Category 在产品列表中分页,我使用 PagedList mvc 控制器样本 公共 ActionResult ListProduct(int id, int? pagePos) { var 列表 = db.