2

私は 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

1 に答える 1

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)
于 2012-11-15T17:08:34.737 に答える