2012-11-15 339 views
2

我一直在試驗MVC(昨天開始),並想知道是否可以創建我的「自定義控件」。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。如何從視圖「StringTemplate」中讀取值「Test」?另外,有沒有一種方法可以在「StringTemplate」視圖中執行@ Html.ValidationMessageFor()?如果有任何教程或鏈接,可以幫助我解決這個

將不勝感激......

謝謝!

回答

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) 
+0

謝謝,這完全回答我的問題! – user1484089