我正在关注MVC的this YouTube教程,我对EditorFor和LabelFor HTMLHelpers有一些疑问,并在网上查找。找到this博客,详细解释。但是,在博客中,提到我们需要在Views \ Shared文件夹中包含[datatype] .cshtml文件,以便我们能够将EditorFor / LabelFor方法应用于datatype [datatype]的属性。但在我的项目中,我没有在解决方案中的任何地方看到任何String.cshtml文件。那么为什么我能够使用AccountNumber属性的EditorFor方法,该属性是数据类型String。下面的示例代码
我不应该在Views \ Shared文件夹中使用String.cshtml文件来使用这些EditorFor方法吗?
<div class="form-group">
@Html.LabelFor(model => model.AccountNumber, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.AccountNumber, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.AccountNumber, "", new { @class = "text-danger" })
</div>
</div>
答案 0 :(得分:0)
作为评论中提到的Stephen Muecke, onTabSelected(event: any){
console.log('Tab Title: ' + event.title);
}
命名空间中有默认模板。我认为评论真的说明了一切,但我会试着澄清一下幕后发生的事情。如果您查看EditorFor
的源代码,最终会找到System.Web.Mvc.Html
internal static
,其中包含某些默认类型的字典,而这些字典又使用TemplateHelpers
。通过在文件夹DefaultEditorTemplates
或Shared/EditorTemplates
中放置视图,您可以自行覆盖它们。因此,即使Shared/DisplayTemplates
位于默认模板的字典中,您也可以通过将Boolean
放在文件夹的开头来覆盖它。
来自Boolean.cshtml
:
TemplateHelpers
从private static readonly Dictionary<string, Func<HtmlHelper, string>> _defaultEditorActions = new Dictionary<string, Func<HtmlHelper, string>>((IEqualityComparer<string>) StringComparer.OrdinalIgnoreCase) {
{ "HiddenInput", new Func<HtmlHelper, string>(DefaultEditorTemplates.HiddenInputTemplate) },
{ "MultilineText", new Func<HtmlHelper, string>(DefaultEditorTemplates.MultilineTextTemplate) },
{ "Password", new Func<HtmlHelper, string>(DefaultEditorTemplates.PasswordTemplate) },
{ "Text", new Func<HtmlHelper, string>(DefaultEditorTemplates.StringTemplate) },
{ "Collection", new Func<HtmlHelper, string>(DefaultEditorTemplates.CollectionTemplate) },
{ "PhoneNumber", new Func<HtmlHelper, string>(DefaultEditorTemplates.PhoneNumberInputTemplate) },
{ "Url", new Func<HtmlHelper, string>(DefaultEditorTemplates.UrlInputTemplate) },
{ "EmailAddress", new Func<HtmlHelper, string>(DefaultEditorTemplates.EmailAddressInputTemplate) },
{ "DateTime", new Func<HtmlHelper, string>(DefaultEditorTemplates.DateTimeInputTemplate) },
{ "DateTime-local", new Func<HtmlHelper, string>(DefaultEditorTemplates.DateTimeLocalInputTemplate) },
{ "Date", new Func<HtmlHelper, string>(DefaultEditorTemplates.DateInputTemplate) },
{ "Time", new Func<HtmlHelper, string>(DefaultEditorTemplates.TimeInputTemplate) },
{ typeof (Color).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.ColorInputTemplate) },
{ typeof (byte).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (sbyte).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (int).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (uint).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (long).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (ulong).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.NumberInputTemplate) },
{ typeof (bool).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.BooleanTemplate) },
{ typeof (Decimal).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.DecimalTemplate) },
{ typeof (string).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.StringTemplate) },
{ typeof (object).Name, new Func<HtmlHelper, string>(DefaultEditorTemplates.ObjectTemplate) }
};
创建DefaultEditorTemplates
:
Boolean
以下是Core的源代码: