【发布时间】:2016-08-23 23:55:50
【问题描述】:
我正在开发一个 asp.net mvc-5 Web 应用程序。我有以下模型类:-
public class Details4
{
[HiddenInput(DisplayValue=false)]
public string RESOURCENAME { set; get; }
[Display (Name="Account Name")]
[Required]
public string ACCOUNTNAME { set; get; }
[Display(Name = "Resource type")]
[Required]
public string RESOURCETYPE { set; get; }
[DataType(DataType.Password)]
[Required]
public string PASSWORD { set; get; }
[Display(Name = "Description")]
[DataType(DataType.MultilineText)]
public string Description { set; get; }
[Display(Name= "URL")]
[Url]
public string RESOURCEURL { set; get; }
[Display(Name="Owner Name")]
[Required]
public string OWNERNAME { set; get; }
[Display(Name = "Resource Group Nam")]
public string RESOURCEGROUPNAME { set; get; }
[JsonProperty("Domain")]
public string DomainName { set; get; }
[JsonProperty("DNSNAME")]
public string DNSNAME { set; get; }
[Display(Name = "Department")]
public string DEPARTMENT { set; get; }
[Display(Name = "Location")]
public string LOCATION { set; get; }
public List<RESOURCECUSTOMFIELD> RESOURCECUSTOMFIELD { set; get; }
}
public class RESOURCECUSTOMFIELD
{
public string CUSTOMLABEL { set; get; }
public string CUSTOMVALUE { set; get; }
}
现在我通常在现场级别使用@Html.EditorFor() 和LabelFor()。但是对于这个模型,我想开始使用@Html.EditorForModel,因为我在视图上的标记会更少:-
@Html.EditorForModel()
现在结果不是我所期望的 100%:-
任何人都可以建议我如何克服这些限制:-
有没有办法将 ResourceType 字段作为下拉列表? .现在,如果我要渲染单独的字段,我可以使用
@Html.DropDownlistFor.. 但不确定在使用@Html.EditorForModel时如何处理?-
有没有办法修改生成的布局?,现在在我的应用程序中很常见,我有以下标签布局 --> 文本框:-
<div> <span class="f">@Html.DisplayNameFor(model => model.Resource.RESOURCENAME)</span> @Html.EditorFor(model => model.Resource.RESOURCENAME) @Html.ValidationMessageFor(model => model.Resource.RESOURCENAME) </div>
我在同一行有标签和文本,我用 class=f 包裹标签,这将以粗体显示标签。那么我可以修改从EditorForModel 生成的输出以使标签和文本框位于同一行,而不是位于 2 个单独的行上吗?
- 我能否强制 EditorForModel 呈现
RESOURCECUSTOMFIELD列表列?
【问题讨论】:
-
EditorForModel()将为模型中的每种类型使用默认的 EditorTemplates。如果你想要特定的模板,那么你需要创建你自己的EditorTemplates -
@StephenMuecke 但是如果我使用 EditorForModel() 我怎么能有我的 resourceType 字段的下拉列表?有没有办法强制 EditorForModel 呈现复杂的实体,例如我的情况下的 RESOURCECUSTOMFIELD?
-
您可以使用
[UIHint]装饰该属性并为该属性创建一个模板并(畏缩)为SelectList使用ViewBag属性 -
就我个人而言,我从不使用
EditorForModel(),而我唯一一次使用EditorFor()是当我有一个复杂类型(单个对象或集合)的EditorTemplate时 -
上帝没有。我使用
@Html.TextBoxFor()或CheckBoxFor()等
标签: css asp.net razor html-helper asp.net-mvc-5