Custom EditorFor Template and htmlAttributes

前端 未结 1 1872
挽巷
挽巷 2021-01-19 15:18

I\'m trying to use EditorFor custom templates.

I want to create a Int32 and decimal templates to render the inputs with some validations.

This is what I\'m t

相关标签:
1条回答
  • 2021-01-19 16:19

    You are using the overload of EditorFor() that passes the object as additionalViewData. You can read that within the template from the ViewDataDictionary

    @model int?
    @{ var attributes = ViewData["htmlAttributes"]; } // returns { @readonly = "readonly" }
    

    which you could then merge with your existing attributes and use in the TextBoxFor() method.

    @{
        var htmlAttributes = HtmlHelper.AnonymousObjectToHtmlAttributes(attributes);
        htmlAttributes.Add("oninput", "this.value=this.value.replace(/[^0-9]/g,'')";
    }
    @Html.TextBoxFor(model => model, htmlAttributes)
    

    Note that TextBoxFor() generates type="text" so there is no need to add it again. In addition, you do not need the leading @ unless its a reserved keyword (for example @class = "...")

    0 讨论(0)
提交回复
热议问题