Search code examples
asp.net-mvc-3modelmetadata

Change field in model metadata to read only in runtime based on criteria


I'm creating a generic interface for editing pages and on some pages eg the start page I need to disable or remove some fields. The form is rendered with Html.EditorFor. What is the best way of doing this?


Solution

  • You could write a custom editor template for the given type (string, decimal, object, ...):

    @model string
    @Html.TextBox(
        "", 
        ViewData.TemplateInfo.FormattedModelValue,
        ViewData
    )
    

    and then:

    @Html.EditorFor(x => x.Foo)
    

    or in views where you want it to be disabled:

    @Html.EditorFor(x => x.Foo, new { disabled = "disabled" })