如何覆盖EditorFor布局

时间:2011-12-29 11:00:29

标签: asp.net-mvc-3 asp.net-mvc-2

如何覆盖EditorFor布局?例如,如果我想在编辑器字段之前或之后渲染一些文本。

2 个答案:

答案 0 :(得分:0)

以下是在EditorFor之前和之后添加一些文本的代码示例。

步骤1:使用特定的DataType定义模型类中的字段,其中包含逻辑探测自定义名称,如SmallText,CustomName等。在此示例中,我只使用了“MyTypeOfField”。

[Required(ErrorMessage = "Field_Value code is a required field.")]
    [MaxLength(100)]
    [Display(Name = "Field Display Name")]
    [DataType("MyTypeOfField")]
    public string MyField { get; set; }

步骤2:在文件夹:Views / Shared / EditorTemplates中创建“MyTypeOfField.cshtml”,代码如下。如果EditorTemplates文件夹不存在,请创建它。

@inherits System.Web.Mvc.WebViewPage<string>
@string.Format("{0, -10}","XXXXXXXXXX") @Html.TextBox("", "", new { style = "width:30px; text-align:right;" }) @string.Format("{0, -10}","1234567890")

希望这有帮助!

答案 1 :(得分:-1)

EditorForHtmlHelper类定义的扩展方法。如果要覆盖它,则必须继承HtmlHelper。根据{{​​3}}重写扩展方法是一个坏主意。即使您决定采用这种方式,您如何使mvc使用子类HtmlHelper而不是默认值。您最好的选择可能是重载EditorFor方法并在视图中使用它而不是默认方法。