문제

해야 하는 이유는 무엇입니까 지정 runat="server" 모 ASP.NET 컨트롤을 할 때 그것은 필수 특성 server 옵션만 내에서 사용할 수 있는 제한된 지식의 ASP.NET 며,오류가 발생하지 않는 경우에 그것을 사용합니까?

내가 이해할 수 있는 선택적으로 사용하에 HTML 태그를,그리고 내가 이해하는 클라이언트/서버 패러다임이 무엇을 실제로 지정.

그것은 중복 태그신할 수 있습니다 암시적으로 통제되는 ASP.NET 제어나 있는 근본적인 이유는?

도움이 되었습니까?

해결책

나는 항상 ASP.NET 태그와 HTML 태그를 혼합 할 수 있다는 이해를 위해 더 많은 것이 있다고 믿었고 HTML 태그는 어느 쪽이든 옵션을 가지고 있습니다. runat="server" 아니면 아니에요. 태그를 남겨 두는 것은 아무것도 아프지 않으며 컴파일러 오류가 발생합니다. 웹 언어에 대해 더 많이 암시할수록 신진 프로그래머가 들어 와서 배우는 것이 덜 쉬운 일입니다. 그것은 태그 속성에 대해 장황한 것만 큼 좋은 이유입니다.

이 대화는 Mike Schinkel의 것입니다 블로그 Microsoft National Services의 자신과 Talbot Crowell 사이. 관련 정보는 다음과 같습니다 (소스의 문법 오류로 인한 첫 번째 단락) :

[...] 그러나의 중요성 <runat="server"> 일관성과 확장 성을위한 것입니다.

개발자가 일부 태그를 표시 해야하는 경우 (즉. <asp: />) ASP.NET 엔진이 무시할 경우 태그와 향후 향상된 네임 스페이스 충돌 문제도 있습니다. 필요에 따라 <runat="server"> 속성, 이것은 부정됩니다.

계속합니다 :

만약에 <runat=client> 모든 클라이언트 측 태그에 필요했으며, 파서는 모든 태그를 구문 분석하고 <runat=client> 부분.

그는 계속한다:

현재 내 추측이 맞다면, 파서는 단순히 태그가없는 한 모든 텍스트 (태그 또는 태그 없음)를 무시합니다. runat=server 속성 또는“<%"접두사 또는 SSI"<!– #include(...)또한 Asp.net은 웹 개발자 (foo.aspx.vb)에서 웹 디자이너 (foo.aspx)를 분리하도록 설계되었으므로 웹 디자이너는 자체 웹 디자이너 도구를 사용하여 HTML 및 클라이언트 측 JavaScript를 배치 할 수 있습니다. ASP.NET 특정 태그 또는 속성에 대해 알 필요가 없습니다.

다른 팁

나는 보통 추측하는 것을 좋아하지 않지만 나는 이것에 갈 것입니다 ...

Microsoft의 .NET 마케팅 과대 광고를 기억한다면 (2001?). 서버 였나요? 프로그래밍 플랫폼? 언어? 완전히 새로운 것이 있습니까? 광고를 감안할 때, 그것은 당신이 원했던 모든 것입니다. 단지 당신이 가질 수있는 모든 문제를 해결했습니다.

따라서, ASP.NET 코드가 .NET 런타임에 연결된 Internet Explorer 사본에서 서버 측 또는 클라이언트 측 (어디에서나 실행할 수있는 숨겨진 그랜드 비전이 있다고 생각합니다. runat = "Server"는 단지 흔적 잔재 일 뿐이며, 클라이언트 측 동등성은 결코 생산에 결코 그것을 만들지 않았기 때문에 남겨 둡니다.

그 이상한 광고를 기억하십니까?

관련된: 레지스터의 기사 .NET 이력이 있습니다.

페이지에 포함될 수있는 모든 컨트롤이 아닙니다. ~ 해야 하다 서버에서 실행하십시오. 예를 들어:

<INPUT type="submit" runat=server />

이것은 본질적으로 다음과 같습니다.

<asp:Button runat=server />

첫 번째에서 runat = 서버 태그를 제거하면 브라우저에서 실행되는 표준 HTML 버튼이 있습니다. 서버에서 특정 컨트롤을 실행 해야하는 이유가 있으며 ASP.NET이 포함 된 HTML 마크 업을 기반으로 원하는 것을 "가정"할 수있는 방법은 없습니다. runat = 서버를 "추론"할 수 있습니다. <asp:XXX /> 컨트롤 제품군이지만 Microsoft는 Markup Syntax 및 ASP.NET 엔진의 해킹을 고려할 것입니다.

Microsoft MSDN 기사 잊혀진 컨트롤 : HTML 서버 컨트롤 텍스트 상자의 예제와 함께 runat = "Server"사용 설명 <input type="text"> 그것을 변환하여 <input type="text" id="Textbox1" runat="server">

이렇게하면 웹 페이지가 생성되어 클라이언트로 전송되기 전에 서버의 HTML 요소에 대한 프로그래밍 방식 액세스가 제공됩니다. HTML 요소에는 ID 속성이 포함되어야합니다. 이 속성은 요소의 ID로 사용되며 특정 ID로 요소에 프로그램을 프로그래밍 할 수 있습니다. 이 속성 외에도 HTML 요소에는 runat = "Server"가 포함되어야합니다. 이것은 프로세싱 서버에 태그가 서버에서 처리되어 있으며 기존의 HTML 요소로 간주되지 않음을 알려줍니다.

요컨대, HTML 요소 추가에 대한 프로그래밍 방식 액세스를 가능하게합니다. runat="server" 그것에.

내 의심은 처리 중에 서버 측 제어가 식별되는 방식과 관련이 있다는 것입니다. 서버 측 처리가 수행되어야하는지 여부를 결정하기 위해 이름으로 런타임의 모든 컨트롤을 확인하지 않고 TAG의 내부 노드 표현을 선택합니다. 컴파일러는 서버 태그가 필요한 모든 컨트롤에 유효성 검사 단계에서이를 가지고 있는지 확인합니다.

ASP.NET 파일의 HTML 요소는 기본적으로 텍스트로 취급됩니다. 이러한 요소를 프로그래밍 할 수있게하려면 a를 추가하십시오 runat="server" HTML 요소에 대한 속성. 이 속성은 요소가 서버 컨트롤로 취급되어야 함을 나타냅니다.

ASP .NET의 모든 컨트롤이 System.web.ui.control에서 "runat"속성이있는 모든 컨트롤이 상속되기 때문입니다.

클래스 System.web.ui.htmlControl에서는 클래스 시스템에서 속성이 필요하지 않습니다 .Web.ui.webControl 속성은 속성이 필요합니다.

편집하다:더 구체적으로하겠습니다. ASP.NET은 HTML의 초록이기 때문에 컴파일러는 일종의 지시 사항이 필요하므로 특정 태그가 서버 측 실행해야한다는 것을 알 수 있습니다. 해당 속성이 없으면 서버에서 먼저 처리하는 것을 알 수 없습니다. 그렇지 않으면 일반 마크 업이라고 가정하고 클라이언트에게 전달합니다.

Microsoft는 페이지가 컴파일되기 전에 컴파일러가 Runat 속성을 추가 하여이 모호성을 고정시킬 수 있다고 생각합니다. Java가 제네릭과 함께 사용하는 유형의 유형과 같은 것과 같은 것과 같은 것이 runat = 서버를 작성할 수 있습니다. ASP : 태그에 대한 접두사가 있으므로 개발자가 걱정할 필요가 없습니다.

당신이 그것을 사용하는 경우에 일반적인 html 태그를 의미할 수 있는 프로그래밍 방식으로 조작하는 이벤트에서 핸들러 등에,예를 들어 변경 href 나의 클래스 앵커 태그에서 페이지 로드...그렇게만 하는 경우가 있기 때문에,바닐라 html 태그를 빠르게 이동합니다.

로 사용자 정의 컨트롤과 서버 컨트롤 없이,그들은 단지 일하지 않고 그들 필요없이,연구 내장의 aspx 전처리기,수 없을 정확히 말할 이유만을 생각한 아마도 좋은 이유로,그들은 단지 쓴 파서는 방법을 찾는 것을 명시적으로 표시로"뭔가".

는 경우@JonSkeet 주위는 어디서,그는 아마도 제공할 수 있는 더 나은 대답합니다.

데이터를 ASP.NET 웹 서버에 제출할 때 runat = "Server"로 언급 된 컨트롤은 서버 응용 프로그램에서 DOT NET 객체로 표시됩니다. HTML 컨트롤에 코드를 수동으로 입력하거나 그렇지 않으면 사용할 수 있습니다. 서버로 실행하십시오 설계보기에서 마우스 오른쪽 버튼을 클릭하여 옵션. ASP.NET 컨트롤은 일반적으로 HTML 컨트롤이없는 Toolbox에서 드래그하면이 속성을 자동으로 가져옵니다.

"ASP"태그가 분명히 ASP 요소이며 서버 측 액세스 요소로 식별하기에 충분해야합니다.

그러나 다른 곳에서는 코드-비만에 사용될 일반 태그를 높이는 데 사용되었습니다.

방금 시행 착오에 의해이 결론에 도달했습니다. 그것들을 제거하고, 다시 컴파일하고 무슨 일이 일어나는지 지켜보십시오.

runat="Server" 서버에 대한 포스트 백이 HTML "컨트롤"을 위해 발생 함을 나타냅니다.

웹 양식 사용 postback 서버에 페이지 제어 이벤트를 처리하도록 지속적으로 신호를 보냅니다.

.NET MVC 페이지는 사용하지 않습니다 postback (양식을 제외하고 "submit"). MVC 에 의존 JQUERY 클라이언트 측의 페이지를 관리하려면 (따라서 많은 필요를 우회합니다. postback 서버에 대한 메시지).

그래서:.NET 웹 양식 ... 사용 "runat" 페이지 마크 업에 많이 속합니다.

.NET MVC 거의 사용하지 않습니다 "runat" 페이지 마크 업의 속성.

이것이 이유를 명확히하는 데 도움이되기를 바랍니다 runat 필수적이다...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top