javascript コールバック関数をパラメーターとして受け取る拡張メソッドがありHtmlHelper
ます。たとえば、次のようになります。
@Html.SomethingCool("containerName", "jsCallbackFunction")
<script type="javascript">
function jsCallbackFunction(e, i) {
alert(e.target.name + ' / ' + i);
}
</script>
ご覧のとおり、javascript コールバック関数名がHtmlHelper
拡張メソッドに渡されます。これにより、開発者はドキュメントを参照して、jsCallbackFunction
関数に必要なパラメーターを特定する必要があります。
私はむしろ次のようなものを好むでしょう:
@Html.SomethingCool("containerName", New SomethingCoolCallbackDelegate(Address Of jsCallbackFunction))
<OutputAsJavascript>
Private Sub jsCallbackFunction(e, i)
' SOMETHING goes here. some kind of html dom calls or ???
End Sub
はSomethingCoolCallbackDelegate
、ターゲット関数のコード コントラクトを提供します。次に、コンパイラは MVC ページで jsCallbackFunction を javascript としてコンパイルします。
このようなものは .NET 4 / ASP.NET MVC 4 / Razor 2 に組み込まれていますか? または、同様のことを実現できる他のテクノロジーはありますか?
例は VB にありますが、C# のソリューションもまったく問題ありません。
説明:
@gideon:とjsCallbackFunction
の 2 つのパラメーターを取るe
ことに注意してくださいi
。ただし、HtmlHelper 拡張メソッドは単に文字列 (javascript コールバック関数の名前) を要求するだけで、この関数が受け取る可能性のあるパラメーターを示しません。私が解決しようとしている問題は 2 つあります。
まず、不足しているパラメーターのヒント。「javascript コールバック名」文字列の代わりに渡される .NET デリゲート型は、これを実現します。これを達成するための他のソリューションを受け入れます。XML コメントについては承知しています。それらは実際には解決策ではありません。
2 つ目は、ページ プログラマーが単一の言語で作業できるようにすることです。JavaScript と VB (または js と C#) を切り替えるには、(少なくとも私にとっては) 高価なコンテキスト スイッチが必要です。私の脳はすぐには移行しません。VB または C# で作業し続けると、生産性とコスト効率が向上します。したがって、.NET 言語で関数を記述し、それを ASP.NET MVC/razor ビューのコンテキストで JavaScript にコンパイルできるようにすることが、私が求めているものです。
@TyreeJackson:SomethingCool
は、HtmlHelper
HTML と JavaScript を出力する拡張メソッドです。JavaScript 出力の一部は、ユーザー (プログラマー) が提供する関数を呼び出して、いくつかの決定を行う必要があります。ajax 呼び出しに提供する成功または失敗関数に似ていると考えてください。