2012-02-18 12 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

ヘルパーは静的である必要があり、Razorは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

関連する問題