2012-03-15 5 views
1

ASP.NET에서는 ascx 컨트롤이 있고 자체 Load() 메서드로 Scriptmanager.RegisterClientScriptBlock을 호출합니다.asp.net MVC에서 Javascript 컨트롤을 만들거나 렌더링하는 방법은 무엇입니까?

나는 꺼지고 페이지의 컨트롤을 만들 내 자바 스크립트 라이브러리의 방법이 될 것입니다

var myObject = CreateNewMyObject(param, param, param...);

같은 자바 스크립트의 블록이있을 것이다.

그러나 MVC에서는 전에이 작업을 한 적이 없으므로 어떻게해야할지 확신 할 수 없습니다.

완전히 렌더링 된 html을 반환하는 @ (this.Html.RenderMyObject (param, param))과 같은 메소드를 호출 할 수 있지만 위와 같이하고 싶습니다. javascript 함수는 html을 렌더링합니다.

이 방법으로 var myObject = CreateNewMyObject(param, param, param...);을 보내 주시겠습니까? 아니면 훨씬 좋은 방법이 있습니까?

답변

1

MVC와 함께, 특히 Razor를 사용하면 자바 스크립트를 원하는대로 사용할 수 있다고 생각합니다. 귀하의 질문을 올바르게 이해하면 면도 페이지의 onLoad javascript 함수에서 직접 javascript 함수를 호출 할 수 있습니다. 자바 스크립트가하는 유일한 것은 컨트롤을 그리는 경우 당신은 당신의 질문에서 언급 한 것처럼

<script type="text/javascript"> 
$(function() { 
    myMethodCall(); 
</script> 

그러나, 나는 @HTML 도우미를 만드는 것이 좋습니다.

+1

그래, 내 질문에 약간 심하게 말한 것 같아. 내 컨트롤이' hello [name]'my html helper가 @ (renderHello ("bob"))가 될 것이라고 가정한다면; 당신이 말한 것처럼 function() 호출을 삽입 할 것이지만 매개 변수를 전달해야하므로''하지만 다소 어색해 보입니다. – NibblyPig

+0

자바 스크립트에 대해 아직 많이 알고 있기 때문에 용서해주십시오. 그러나 당신의 문제가 당신의 접근 방식에 약간의 변화를 따른다 고 상상해보십시오. '@ (renderHello ("bob"))'을 사용하는 대신 HTML의 '에 스팬을 넣기 만하면됩니다. 그렇다면 자바 스크립트는'myMethodCall (someId, 'bob');을 가질 것입니다. 어느 것이 위대하고, 끈적이지 않은 iirc가 아닙니다. 그런 다음 실제 데이터를 원하기 때문에 모델을 사용하여 데이터를 자바 스크립트에 전달합니다. '(function() {@foreach (var t in model) myMethodCall (someId, t.Name)})') (아마도 유효하지 않은 문법) – Quickhorn

+0

조금 더 생각해 보면 자바 스크립트는 스팬 다른 요소에 추가하십시오. 다시 말하지만, 나는 이것이 도움이되었고 완전히 잘못된 접근법이 아니길 바란다. – Quickhorn

관련 문제