我正在尝试为输入添加一个类.
这不起作用:
@Html.EditorFor(x => x.Created, new { @class = "date" })
Run Code Online (Sandbox Code Playgroud) 为什么我不能传入html属性EditorFor()?例如;
<%= Html.EditorFor(model => model.Control.PeriodType,
new { disabled = "disabled", readonly = "readonly" }) %>
Run Code Online (Sandbox Code Playgroud)
我不想使用元数据
更新:解决方案是从视图中调用它:
<%=Html.EditorFor( model => model.Control.PeriodEndDate, new {Modifiable=model.Control.PeriodEndDateModifiable})%>
Run Code Online (Sandbox Code Playgroud)
并ViewData["Modifiable"]在我的自定义EditorTemplates/String.ascx中使用,其中我有一些视图逻辑,确定是否将readonly和/或disabled属性添加到输入传入的匿名对象EditorFor()是一个被调用的参数additionalViewData,其属性被传递给编辑器模板ViewData采集.
这是一个非常具体的问题.我设法通过使用名为EmailAddress.cshtml,保存在~/Views/Shared/EditorTemplates/文件夹中的编辑器模板自动将占位符属性添加到html5电子邮件输入类型.请参阅以下代码:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "text-box single-line", placeholder = ViewData.ModelMetadata.Watermark })
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为我[DataType(DataType.EmailAddress)]在视图模型中使用了DataAnnotation.
什么不起作用是我使用int?变量.
public class MiageQuotaRequestViewModel
{
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Nombre de place demandées", Prompt = "Nombre de place")]
[Range(0, 50, ErrorMessage = "La demande doit être comprise entre 0 et 50 places")]
public int? RequestedQuota { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
@Html.EditorFor 像这样翻译这个输入:
<input class="text-box single-line" data-val="true" data-val-number="The field Nombre de place demandées must be a number." data-val-range="La demande …Run Code Online (Sandbox Code Playgroud) c# placeholder mvc-editor-templates data-annotations asp.net-mvc-4