2012-03-15 12 views
1

ASP.NETでは、私はascxコントロールを持っていて、独自のLoad()メソッドでScriptmanager.RegisterClientScriptBlockを呼び出します。asp.net MVCでJavascriptコントロールを作成/レンダリングするにはどうすればよいですか?

私はオフに行くと、ページ上のコントロールを作成するために私のJavaScriptライブラリのメソッドになり

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

のようなジャバスクリプトのブロックを持っていると思います。

しかし、MVCではこれまでにこれをやったことがないので、何をすべきか分かりません。

@(this.Html.RenderMyObject(param、param))など、完全にレンダリングされたhtmlを返すメソッドを呼び出すことができますが、私は上記のようにしたいと思います - javascript関数はhtmlをレンダリングします。

このような方法でvar myObject = CreateNewMyObject(param, param, param...);を返す必要がありますか、それとももっと良い方法がありますか?

答えて

1

MVC、特にRazorのアイデアは、あなたが望むようにJavascriptを使用することだと思います。あなたの質問を正しく理解していれば、RazorページのonLoad javascript関数でjavascript関数を直接呼び出すことができます。

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

使いのブラウザではJavaScriptがない唯一のことは、コントロールをアップペイントである場合は、私はあなたの質問で述べたように@HTMLヘルパーを作成することをお勧めします。

+1

ええ、私の質問は少しひどく言われていると思います。私のコントロールが ' hello [name]'私のhtmlヘルパーは@(renderHello( "bob"))になります。あなたが言うようにfunction()コールを注入するが、パラメータを渡す必要があるので、 ' 'しかし、それはやや粘りそうだ。 – NibblyPig

+0

私はまだ私が望むように私は多くのjavascriptについて知らないので、私を許してください。しかし、あなたの問題があなたのアプローチのわずかな変化に続くと想像する方法。 '@(renderHello(" bob "))'を使うのではなく、htmlの 'にスパンを設定するだけです。次に、あなたのjavascriptに 'myMethodCall(someId、 'bob');'があります。それは素晴らしい、そして不粘着のiircではない。次に、実際のデータが必要なので、モデルを使用してデータをJavaScriptに渡します。 '$(function(){@foreach(var t in model)myMethodCall(someId、t.Name)})') '(おそらく無効な構文) – Quickhorn

+0

もう少し考えれば、あなたのJavaScriptはおそらくスパンそれを別の要素に追加します。繰り返しますが、私はこれが役立ち、間違ったアプローチではないことを願っています。 – Quickhorn

関連する問題