5

I'm using the following code-snippet extensively in my model templates.

<div class="control-group">
    @Html.LabelFor(model => model.FirstName)
    <div class="controls">
        @Html.TextBoxFor(model => model.FirstName, new { @class = "span3" })
        @Html.ValidationMessageFor(model => model.FirstName)
    </div>
</div>

Is it possible to encapsulate this generically in an editor template so I can use Html.EditorFor(...) without resorting to a custom extension?

1 Answer 1

9

Is it possible to encapsulate this generically in an editor template so I can use Html.EditorFor(...) without resorting to a custom extension?

Of course:

~/Views/Shared/EditorTemplates/Foo.cshtml:

<div class="control-group">
    @Html.Label("")
    <div class="controls">
        @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class = "span3" })
        @Html.ValidationMessage("")
    </div>
</div>

and then:

@Html.EditorFor(x => x.FirstName, "Foo")

or:

[UIHint("Foo")]
pubilc string FirstName { get; set; }

and then:

@Html.EditorFor(x => x.FirstName)
Sign up to request clarification or add additional context in comments.

4 Comments

You probably don't need the "Foo" on the last example. I had no idea you can use ("") like that... Also, congratulations on almost reaching 300k.
@Kobi, yes, I have just realized and fixed that.
Also if you use control-group syntax in many partial views you can abstract it away to a single method: stackoverflow.com/questions/4083147/…
I would add: [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] also for MV6 I would use: blog.emikek.com/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.