asp.net-mvc – 将HTML.EditorFor转换为下拉列表(html.dropdownfor?)
|
目前我正在使用一个 Html.EditorFor控件在默认的“创建”视图页面这样. <%: Html.EditorFor(model => model.IsActive) %> 我想使用值将其转换为下拉列表,并且仍然绑定到视图中的模型.我的问题是两倍. >如果在下拉菜单中只需要2/3的值.它有一个快速的方式显式地填充2或3个值? 先谢谢您的帮助. 解决方法为了生成一个下拉列表,您需要在视图模型上使用2个属性:将所选值绑定的标量属性和将包含要显示在下拉列表中的项的集合属性.所以你可以定义一个视图模型: public class DropDownListViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
然后在您的主视图模型上具有此类型的属性: public DropDownListViewModel Foo { get; set; }
现在你可以有一个这种类型的自定义编辑器模板(/ Views / Shared / EditorTemplates / DropDownListViewModel.ascx): <%@ Control
Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DropDownListViewModel>"
%>
<%= Html.DropDownListFor(x => x.SelectedValue,Model.Items) %>
然后在你的主视图中: <%= Html.EditorFor(x => x.Foo) %> 现在剩下的就是让你的控制器动作渲染主视图来填充Foo属性和相应的值.可以硬编码,来自存储库或任何.没关系. 另一方面,如果您事先知道这些值,您可以在编辑器模板(/ Views / Shared / EditorTemplates / YesNoDropDown.ascx)中进行硬编码: <%= Html.DropDownList(
"",new SelectList(
new[]
{
new { Value = "true",Text = "Yes" },new { Value = "false",Text = "No" },},"Value","Text",Model
)
) %>
接着: <%= Html.EditorFor(x => x.IsActive,"YesNoDropDown") %> 或者通过在您的视图模型上装饰IsActive属性: [UIHint("YesNoDropDown")]
public bool IsActive { get; set; }
接着: <%= Html.EditorFor(x => x.IsActive) %> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Angular ng-include cshtml页面
- asp.net-mvc – 首次使用ASP.NET MVC时的主要风险
- asp.net-mvc-4 – 扩展名的URL不能通过路由处理
- asp.net-mvc – 如何将URL参数绑定到具有不同名称的模型属性
- asp.net-core – asp.net核心依赖注入问题 – AddScoped没有
- asp.net-mvc – Ninject如何在ASP.NET MVC中创建控制器?
- iis – ServerManager构造函数在测试环境中崩溃
- asp.net-mvc – 了解nopCommerce的MVC标签
- asp.net – 检查IE浏览器 – .NET
- ASP.NET缓存方法分析和实践示例代码
- asp.net – WebResource Hell – 找不到资源
- 如何在IIS10中正确启动asp.net应用程序
- asp.net – WebForm_DoCallback定义
- 如何使用WMD在ASP.NET中存储降价?
- 缓存 – 实体框架的缓存查询5
- Asp.net下使用Jquery Ajax传送和接收DataTable的
- asp.net-mvc-5 – 在GenerateUserIdentityAsync方
- asp.net-mvc – 我应该在ASP.NET MVC中使用Anti-
- ASP.NET Identity会话cookie的安全性如何?
- asp.net – 经过身份验证的服务不支持跨域javasc
