2011-02-26 1 views
0

어떻게하면 모든 aspx 사이트의 모든 텍스트 상자에 추가 할 수 있습니다 :How To : 모든 Html.TextBox 덮어 쓰기 - ascx가 호출되지 않았습니다! 왜?

<%: Html.TextBoxFor(model => model.Firstname, new { style = "float: left; width: 4.1em;", maxlength = "4" })%> 

그들을 검색하지 않고 수동으로 뭔가를 추가하지 않고 자바 스크립트 기능 :

new { onkeyup='Foo(this); return false;' } 
아이디어 : 다음과 같은 ascx 쓰기 !

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<%: Html.TextBox( string.Empty, 
        ViewData.TemplateInfo.FormattedModelValue, 
        new { onkeyup = "foo(this); return false;" })%> 

ascx의 이름은 Test.ascx
이며 \Views\Shared\EditorTemplates\에 저장되어 있다고 가정 해주십시오.

내 문제는 "Test.ascx"isnt 호출됩니다.
왜?
모든 aspx 사이트에 참조를 추가해야합니까?
상속 누락 된 부분에 < System.String>이 있습니까?

도움이 될 것입니다.

미리 감사드립니다.

답변

1

는 사용할 필요가 호출되는 <input type="text" ...을 원하고 오버라이드하거나 대체 할 수 없습니다. 그것이 을 사용하는 것이 좋은 이유는 Views\Shared\EditorTemplates 폴더에 사용자 지정 템플릿을 정의하여 렌더링 방식을 수정할 수 있기 때문입니다.

이제 편집기 템플릿이 호출되는 경우 :

<%= Html.EditorFor(model => model.Firstname, "Test") %> 

을하거나 [UIHint] 속성보기 모델 속성을 장식하여 : Test.ascx이처럼 호출 할 수 간단히

[UIHint("Test")] 
public string Firstname { get; set; } 

과 :

<%= Html.EditorFor(model => model.Firstname) %> 
+0

완벽! 설명 주셔서 감사합니다! 그것을 시도하고 Test.ascx 이제 호출 된 및 js/jquery 함수를 추가 할 수 있습니다. 그러나 원래 속성 new {style = "float : left; width : 4.1em;", maxlength = "4"}는 손실됩니다! 나는 그것에 대해 새로운 질문을 만들 것입니다! 하지만 당신이 정말 많이 도와 줬어! 감사! – user415876

+0

http://stackoverflow.com/questions/5135210/how-to-avoid-that-an-ascx-tempalte-overwrites-the-original-style-class-maxlengt – user415876