css – 使用@ Html.EditorForModel的限制

前端之家收集整理的这篇文章主要介绍了css – 使用@ Html.EditorForModel的限制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在一个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默认模板不是高度可定制的.你应该编写一个EditorTemplate来解决你所有的问题.你可以检查这个 tutorial.
您将必须手动编写所有属性,但每个模型只能执行一次.将模板放在EditorTemplates文件夹中,您的整个应用程序可以使用它.回答你的子弹:

>现在你编写自己的模板,你可以为你的属性使用任何类型的输入.字符串类型的默认编辑器是一个文本框(枚举类型的下拉列表).
>您将不得不在模板中编写自己的布局.这正是你想要的.
>您还可以编写RESOURCECUSTOMFIELD的编辑器模板,并在模板中使用它.即使对于IEnumerable&RESOURCECUSTOMFIELD>也可以编写一个模板:

@model IEnumerable<RESOURCECUSTOMFIELD>
@foreach(var customModel in Model)
{
    @Html.LabelFor(m => customModel.CUSTOMLABEL )
    @Html.TextBoxFor(m => customModel.CUSTOMVALUE )
}

并使用它(在你的主模板):

@Html.EditorFor(m => m.RESOURCECUSTOMFIELD )

如果要更改DisplayFor对模型的工作原理,还有一些名为DisplayTemplate的东西.

猜你在找的CSS相关文章