public class JavaScriptHelper
{
public HelperResult Minify(Func<HelperResult> code)
{
return new HelperResult(writer => writer.Write(JavaScriptCompressor.Compress(code().ToString())));
}
}
@section Script
{
@JavaScriptHelper.Minify(
@<script>
(function ($, b) {
$(function() {
$("#upload").bind("submit", function (e) {
e.preventDefault();
console.log("going");
$(this).ajaxSubmit(function (result) {
if (!b.ajaxFailure(result, true)) {
console.log(result);
}
});
});
});
})(jQuery, b);
</script>)
}
0
A
ответ
1
Помощник должен быть статическим, а Бритва будет проходить в Func<dynamic, HelperResult>
, а не только Func<HelperResult>
. Кроме того, вы не захотите передать <script></script>
в мини-блок, чтобы переместить их за пределы вызова JavaScriptHelper.Minify(...)
, а затем обернуть содержимое <text></text>
, чтобы Razor знал, как его разобрать. Попробуйте следующее:
public class JavaScriptHelper
{
public static HelperResult Minify(Func<dynamic, HelperResult> code)
{
return new HelperResult(writer => writer.Write(JavaScriptCompressor.Compress(code(null).ToString())));
}
}
@section Script
{
<script>
@JavaScriptHelper.Minify(
@<text>
(function ($, b) {
$(function() {
$('#upload').bind('submit', function (e) {
e.preventDefault();
console.log('going');
$(this).ajaxSubmit(function (result) {
if (!b.ajaxFailure(result, true)) {
console.log(result);
}
});
});
});
})(jQuery, b);
</text>)
</script>
}
+0
Спасибо, я в конечном итоге использовал частичное действие, хотя – bevacqua
Надеюсь, что теги, которые я добавил, верны. Если нет, пожалуйста, измените их. – CodesInChaos