2016-06-23 5 views
0

그래서 @HTML.Listbox html 도우미에 면도기 구문으로 data- 속성을 추가 할 수 있기를 원합니다. 내 이해는 내 자신의 고객 html 도우미를 만들지 않고이 일을 할 수 없다는 것입니다.mvc 사용자 정의 html 도우미가 기본 도우미를 상속 할 수 있습니까?

내 질문에, 사용자 정의 html 도우미를 만드는 방법이 있지만 기본적으로 @HTML.Listbox의 모든 것을 상속하고 나서 data- 속성을 추가하는 기능을 추가할까요? 이미 뭔가가 존재합니까?

미리 감사드립니다.

+0

예 내장 된'ListBoxFor()'메소드를 호출하고'htmlAttributes' 매개 변수에 추가 값을 추가하는 자신 만의'MyListBoxFor()'메소드를 만들 수 있습니다 –

+0

C#이나 mvc 아직, 정확히 무슨 뜻인지 샘플을 작성 하시겠습니까? – blubberbo

+2

왜 이렇게해야하는지 명확하지 않습니다. @Html.ListBoxFor (m => m.someProperty, Model.Options, new {data_someName = "someValue"}) ' –

답변

0

모든 내장 HtmlHelper 메소드는 HTML 속성을 추가 할 수 과부하가 있습니다.

ListBoxFor() 방법의 경우, overloads are documented here. 하이픈을 포함하는 속성을 추가 할 때 귀하의 경우에는 그

@Html.ListBoxFor(m => m.someProperty, Model.Options, new { data_someName = "someValue" }) 

하는

<select name="someProperty" id="someProperty" multiple="multiple" data-someName="someValue"> .... </select> 

주를 생성합니다, 당신은 방법에 밑줄을 사용해야합니다 (및 방법은 렌더링에 하이픈으로 변환됩니다 html).

또한 예를 들어 자동

public static MvcHtmlString BootstrapTextBoxFor<TModel, TValue>(this HtmlHelper<TModel> helper, 
Expression<Func<TModel, TValue>> expression, object htmlAttributes) 
{ 
    IDictionary<string, object> attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); 
    attributes.Add("class", "form-control"); 
    ... other 'fixed' attributes as required 
    return InputExtensions.TextBoxFor(helper, expression, attributes); 
} 

몇 가지 다른 예는됩니다 class="form-control" 속성을 추가하는 BootstrapTextBoxFor() 도우미를 만들 수 있습니다, 자동으로 추가 고정 속성을 포함한보다 복잡한 HTML을 생성 할 수 있습니다 자신의 HtmlHelper 확장 메서드를 만들 수 있습니다 대답 herehere에 나와 있습니다.

0

면도기는 당신을 위해 일을 : 폼 컨트롤을 생성

@Html.AnythingHelperObject("NameOrId", new {data-yourcustomdatadom = "valueofdatadom"}) 
+0

글쎄, 실제 htmlstring을 되 돌리는 실제'AnythingHelperObject'를 쓰는 방법을 더 의미했다. :) 그래, 면도칼 – blubberbo