Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为字符串属性ASP.NET MVC4创建EditorTemplate_C#_Asp.net Mvc 4_Mvc Editor Templates - Fatal编程技术网

C# 为字符串属性ASP.NET MVC4创建EditorTemplate

C# 为字符串属性ASP.NET MVC4创建EditorTemplate,c#,asp.net-mvc-4,mvc-editor-templates,C#,Asp.net Mvc 4,Mvc Editor Templates,当我在表单中使用Html.editorforhelper时,我希望能够自定义标记的外观,因此我定义了一个EditorTemplate来实现这一点。这就是我的表单在我看来的样子: @model Models.SimpleUserClass @{ ViewBag.Title=“创建用户”; } @使用(Html.BeginForm(“CreateUser”、“Users”)) { 创建单程旅行 @LabelFor(model=>model.UserName) @EditorFor(model=>m

当我在表单中使用Html.editorforhelper时,我希望能够自定义标记的外观,因此我定义了一个EditorTemplate来实现这一点。这就是我的表单在我看来的样子:

@model Models.SimpleUserClass
@{
ViewBag.Title=“创建用户”;
}
@使用(Html.BeginForm(“CreateUser”、“Users”))
{
创建单程旅行
@LabelFor(model=>model.UserName)
@EditorFor(model=>model.UserName)
@LabelFor(model=>model.username)
@EditorFor(model=>model.username)
@LabelFor(model=>model.UserAge)
@EditorFor(model=>model.UserAge)
@LabelFor(model=>model.UserGender)
@EditorFor(model=>model.UserGender)

}
不要对字符串使用EditorTemplate,只需使用文本框即可:

@Html.TextBoxFor(model => model.UserName, new { @class = "form-control" })
您可以使用以下选项:

@model string

@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue,
                new
                {
                    @class = "form-control",
                    placeholder = ViewData.ModelMetadata.Watermark 
                                  ?? ViewData.ModelMetadata.DisplayName 
                                  ?? ViewData.ModelMetadata.PropertyName
                })
如果不需要,请删除占位符

Re:占位符,这是向用户提示可以在输入中输入的内容。可以使用注释装饰模型特性:

[Display(Name = "Client")]
public int ClientId { get; set; }

[Display(Prompt = "Please enter mailing Name")]
public string MailingName { get; set; }

如果您使用类似的方法,那么您的输入将具有占位符属性,其值取自这些注释,按照编辑器模板中指定的顺序(提示(水印)、名称,然后是属性名称)。

对于这样简单的事情,您不需要EditorTemplate。为什么不将该类分配给Html.TextBoxFor?这是正确的答案,但我不同意您的分析,即为什么为String类型创建编辑器模板不是一个好主意。我认为使用默认的自定义字符串编辑器模板没有任何问题。如果以后需要为类型字符串使用多个编辑器模板(例如,您希望使用
而不是
),则可以轻松使用
[UIHint()]
属性指定要使用的模板。那么,在需要自定义模板的情况下,使用
[UIHint()]
不是更好吗?我明白你的意思,但我想不出任何实际情况下需要类型字符串的默认模板。例如,在本例中,此人将能够在字符串编辑器模板中包含
包装,而不是为每个字段键入/复制/粘贴包装。当然,这是有道理的。@DiegoFrehner如果您想使用
EditorTemplate
添加一个类,您是绝对正确的。我把它从我的答案中删除了。哇,这太棒了!因为我是mvc新手,所以这段代码非常有用。只有一个问题,您引用的占位符是什么,它在标记中的何处呈现?