문제

ASP.NET MVC의 일부 텍스트는 "runat 서버 태그가 없다"고 말하면,이 MSDN 기사 조차도이 문장 바로 위에 올라트 요소에 runat 서버 태그가있는 코드 예제가있을 때 이것을 말합니다.

그리고 stackoverflow 대화에서 나는 읽었습니다

""runat = server "컨트롤을 사용하려는 사실은 기존 ASP.NET 앱을 수행해야한다는 것을 의미합니다.

물론 사이트 마스터 페이지에는 Contentplaceholder에 Runat 서버 속성이 있습니다.

Runat 서버 측면에서 ASP.NET MVC에없는 유일한 것은 각 .aspx/보기의 유비쿼터스 양식 runat = "Server"태그입니다.

그러나 ASP.NET MVC의 나머지 runat 서버 태그는 어떻습니까? 사람들은 ASP.NET MVC가 이것들을 가지고 있지 않다고 말할 때 무엇을 의미합니까?

도움이 되었습니까?

해결책

div와 같은 모든 요소에서 runat = "Server"태그를 사용하는 경우 해당 코드를 별도로 렌더링합니다. 방법 컴파일 된 페이지에서.

'레거시'코드를 변환하는 경우 모든 runat 태그를 바로 제거하는 것이 좋습니다. 그렇지 않으면 다음과 같은 코드가 오류가 발생하는 상황에서 끝납니다.

<% foreach (var cat in cats) { %>
    <div runat="server">
         <span class="name"> <%= cat.name %> </span> is a
         <span class="breed"> <%= cat.breed %> </span>
    </div>
 <% } %>

이 코드는 당신에게 약간의 미친 듯이 말해주지 않을 것입니다 'cat' 범위를 벗어난 것. 결국 전체 생성 된 코드를 보면 <div> 고유 한 방법으로 생성되었습니다. 물론 고양이가 보이지 않는 다른 범위입니다.

MVC 애플리케이션의 기본 템플릿을 1 초로 되돌아보십시오.

현재 템플릿이이를 위해 제공합니다. head :

<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title><%= Html.Encode(ViewData["Title"]) %></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>

이것은 우리가 <%= 구문을 사용하여 제목을 직접 작성한다면 title 태그 - 그렇다면 왜 우리는 그것을 runat로 만들어야합니까?

코드가 의심되는 것은 head 제목 태그 내부의 기존 값을 찾습니다 (여기에서 출력되었을 것입니다. <%= Html.Encode(ViewData["Title"]) %>. 하나를 찾으면 (MVC 템플릿의 모든 샘플 뷰의 경우) 더 이상 아무것도하지 않을 것입니다. 제목이없는 경우 (ViewData [ "Title"]가 NULL 또는 비어있는 경우) Title 기인하다 :

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/RRMaster.Master" 
Title="View Products" AutoEventWireup="true" CodeBehind="ViewProduct.aspx.cs"
Inherits="RR_MVC.Views.Products.ViewProduct" %>

마스터 페이지에서 나는 그것을 제거했을 것이다 runat='server' 태그 - 나는보기에서 내 페이지 제목을 채우고 싶지 않다고 생각하지 않기 때문에 Title 재산. 그러나 나는이 주제에 대해 Phil의 약속 된 블로그 게시물을 보류하고 있습니다.

다른 팁

runat = "Server"를 사용할 수 없다는 것을 의미하는 것이 아니라 일반적으로 MVC에서 서버 측 컨트롤을 사용할 필요는 없습니다. 서버 측 컨트롤이 필요하다고 생각하고 코드-비인으로 작업하고있는 경우 응용 프로그램이 웹 폼을 향한 경향이 있음을 나타냅니다. 일반적으로 코드 베어드 Shoulo에서 발생하는 모든 것들은 이제 컨트롤러 또는보기 로직 자체에서 처리됩니다.

이 튜토리얼에서 읽으십시오.

http://www.asp.net/learn/mvc/tutorial-12-cs.aspx

당신이 필요하다

<head runat="server">

뷰에서 페이지 제목을 쉽게 정의 할 수 있습니다.

MVC는 WebForms 위에있는 레이어 일뿐입니다. 내 Custom WebForms 컨트롤은 또한 스크립트 등록을 위해 헤드 태그에 액세스 할 수있는 서버 사이드가 필요합니다. 이러한 사용자 정의 컨트롤은 ClientSide로 렌더링되며 ViewState 또는 Serverside 이벤트를 사용하지 않습니다. 이로 인해 ASPX 뷰 엔진과 함께 MVC에서도 사용할 수 있습니다.

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