2013-05-13 4 views
1

서버 (서버 쪽 이벤트에 대한 클라이언트 프록시)에서 매우 간단한 스크립트를 만들고 싶습니다. MVC4를 사용하여 서버 측 렌더링 스크립트의 가장 일반적인 방법은 무엇입니까? 첫 번째 대답 후렌더링 자바 스크립트 서버 쪽

업데이트 : 내가 예 @Scripts.Render("~/eventAggregation/events") 위해 포함 할하고 C# 코드와 자바 스크립트를 생성하는 내 서버에 코드를 호출해야합니다 또한이는 LIB 그래서 나는 면도기와 함께 할 질수 위해입니다 페이지 또는 MvcController, 내가 SignalR의 허브 프록시에 가까워 지길 원한다면, 나는 그 코드를 보았지만 동적으로 생성 된 스크립트를 삽입하기위한 수백 줄의 코드를 보았다.

+0

나 ':보기에 왼쪽을 참조하는 것 이제 모든

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(MvcApplication1.Startup), "Application_Start")] 

과 한번도 사용하지 않았지만, 이해할 때부터는'Node.js'가 사용됩니다. –

+0

Node.js로 백엔드를 변경 하시겠습니까? – Anders

답변

1

.

그래서 하나를 작성하여 시작합니다

public class MyHandlerProvider: IRouteHandler 
{ 
    public IHttpHandler GetHttpHandler(RequestContext requestContext) 
    { 
     return new MyHandler(); 
    } 
} 

와의

Application_Start 경로 추가 :

protected void Application_Start() 
{ 
    RouteTable.Routes.Add(
     new Route(
      "eventAggregation/events", 
      new MyHandlerProvider() 
     ) 
    ); 
} 

을 그리고 당신은 didn를 경우

public class MyHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     var response = context.Response; 
     response.ContentType = "text/javascript"; 
     var message = "This is some super dynamic message. The UTC time now is: " + DateTime.UtcNow.ToLongTimeString(); 
     var js = string.Format("alert({0});", new JavaScriptSerializer().Serialize(message)); 
     response.Write(js); 
    } 

    public bool IsReusable 
    { 
     get { return true; } 
    } 
} 

다음 해당 경로 핸들러를 작성 수동으로 도로를 추가하지 않고도 Application_Start에를 사용할 수 있습니다.. 단순히 정적 시작 클래스 쓰기 :

internal static class Startup 
{ 
    public static void Application_Start() 
    { 
     RouteTable.Routes.Add(
      new Route(
       "eventAggregation/events", 
       new MyHandlerProvider() 
      ) 
     );   
    } 
} 

을 다음 어셈블리 다양한 속성을 사용

<script type="text/javascript" src="~/eventAggregation/events"></script> 
+0

업데이트를 참조하십시오. 예전의 WebForms에서 IHttpHandlers를 사용했지만 Web.Config에 등록해야했습니다. 이것은 내가 원하는 것처럼 들립니다.오늘 밤에 시험해보고 내가 원하는대로 대답을 받아 들일 것입니다. 많은 감사합니다! – Anders

+0

집에 도착할 때까지 기다릴 수 없었습니다 : D – Anders

+0

빠른주의, 위의 경로 코드는 모든 행동 링크가 스크립트를 반환합니다 : D 새 컨트롤러를 제공해야합니다. RouteValueDictionary() {{ "controller", string.Empty}}, – Anders

0

이 번들과 RenderSection하고 Scripts.Render @ (

예 :

"@RenderSection("Scripts", true)". 

당신이 당신의 UI 계층에 피가 아래에 서버 측 코드를 통과 하시겠습니까

예 :

요소에 대한 데이터 속성 또는 요소를 가져 와서 JavaScript로 가져옵니다.

<div id="MightyId" data-name="@item.attribute"></div> 

$ ('# MightyId'). 데이터 ('이름')

또는 스크립트 태그에서

.

var ItemsList = "@item" 

OR : IHttpHandler을 : 당신이, 당신이 금속에 가까운 얻을 수있는 MvcController 또는 면도기보기를 사용할 수 없다는 주장 때문에

var Items List = @Html.Raw(Json.Encode(object)) 
+0

업데이트 – Anders

관련 문제