У меня есть метод расширения HtmlHelper
, который выполняет функции обратного вызова javascript как параметры.. например:
@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
предоставит кодовый контракт для целевой функции.
Затем компилятор будет компилировать jsCallbackFunction как javascript на странице MVC.
Есть ли что-то вроде встроенного в .NET 4/ASP.NET MVC 4/Razor 2? Или любая другая технология, которая может достичь чего-то подобного?
Примеры приведены в VB, но решения в С# вполне приемлемы.
Разъяснение:
@gideon: обратите внимание, что jsCallbackFunction
принимает два параметра e
и i
. Однако метод расширения HtmlHelper просто запрашивает строку (имя функции обратного вызова javascript) и не указывает, какие параметры может выполнять эта функция. Проблема, которую я пытаюсь решить, вдвойне.
-
Во-первых, недостающие подсказки параметров. Тип делегирования .NET, переданный вместо строки "имя обратного вызова javascript", выполнит это. Я открыт для других решений для этого. Я знаю комментарии XML. Они на самом деле не являются решением.
-
Во-вторых, старайтесь, чтобы программист страниц работал на одном языке. Переключение между javascript и VB (или js и С#) требует (по крайней мере для меня) дорогого переключателя контекста. Мой мозг не делает переход быстро. Ведение моей работы в VB или С# является более продуктивным и экономически эффективным. Таким образом, возможность написать функцию на языке .NET и скомпилировать ее в javascript в контексте представления ASP.NET MVC/бритвы - вот что я здесь делаю.
@TyreeJackson: SomethingCool
- это метод расширения HtmlHelper
, который я бы написал, который выводит html и javascript. Часть выхода javascript должна вызывать функцию пользователя (программиста), используемую для принятия некоторых решений. Подумайте, что это похоже на функцию успеха или сбоя, которую вы подаете на вызов ajax.