2012-02-18 1 views
0
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

Надеюсь, что теги, которые я добавил, верны. Если нет, пожалуйста, измените их. – CodesInChaos

ответ

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