我一直在试验MVC(昨天开始)并且想知道我是否可以创建我的“自定义控件”。
我有以下内容:
在我看来
@Html.EditorFor(model => model.UserName, "StringTemplate", new {LabelText = "Test" })
“自定义视图”,用于渲染控件
@model MvcApplication.Models.StringTemplate
@Html.LabelFor(model => model.Field, ViewData["LabelText"].ToString())
@Html.TextBoxFor(model => model.Field)
视图模型
public class RegisterModel
{
[Required]
public StringTemplate UserName { get; set; }
}
public class StringTemplate
{
[Required]
public string Field { get; set; }
public StringTemplate()
{
Field = String.Empty;
}
public StringTemplate(string field)
{
Field = field;
}
}
我要做的是通过调用@ Html.EditorFor,使用StringTemplate并传递值LabelText。如何从View“StringTemplate”中读取值“Test”?另外,有没有办法可以在“StringTemplate”视图中执行@ Html.ValidationMessageFor()?
如果有任何教程或链接可以帮助我,我将不胜感激......
谢谢!
答案 0 :(得分:4)
我认为你的事情比他们需要的更难。您不必为要使用的编辑器模板创建自定义类 - 只需使用字符串。
所以在你的模型中:
public class RegisterModel
{
[Required]
public string UserName { get; set; }
}
你的模板看起来像这样(一定要把它命名为“String.cshtml”):
@model System.String
@Html.LabelFor(model => model, (string)ViewData["LabelText"])
@Html.TextBoxFor(model => model)
然后在你看来:
@Html.EditorFor(model => model.UserName, new {LabelText = "Test" })
关于ValidationMessageFor,这也可以添加到您的模板中:
@Html.ValidationMessageFor(model => model)