MVC Custom EditorFor

时间:2012-11-15 16:48:21

标签: asp.net-mvc asp.net-mvc-3 razor html-helper

我一直在试验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()?

如果有任何教程或链接可以帮助我,我将不胜感激......

谢谢!

1 个答案:

答案 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)