Javascript 当我的js文件中有异步方法时,ASP.NET MVC绑定失败

Javascript 当我的js文件中有异步方法时,ASP.NET MVC绑定失败,javascript,asp.net-mvc,asynchronous,Javascript,Asp.net Mvc,Asynchronous,我们开始移动遗留的js脚本以符合最新的规范,并将一些js方法更改为async。比如说 const persistMode = async (serverUrl, id, mode) => { const data = JSON.stringify({id: id, mode: mode}); const ajaxProperties = { type: "POST", url: serverUrl, data: da

我们开始移动遗留的js脚本以符合最新的规范,并将一些js方法更改为async。比如说

const persistMode = async (serverUrl, id, mode) => {
   const data = JSON.stringify({id: id, mode: mode});
   const ajaxProperties = {
       type: "POST",
       url: serverUrl,
       data: data,
       dataType: "json",
       contentType: "application/json"
   };
   return await $.ajax(ajaxProperties);
};
现在我定义了一个bundle,并在cshtml文件中引用它,如下所示

@Scripts.Render("~/bundles/fc")
现在,当视图加载时,我得到以下错误

    System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Ajax.Utilities.JSParser.ParseArrowFunction(AstNode parameters)
   at Microsoft.Ajax.Utilities.JSParser.ParseLeftHandSideExpression(Boolean isMinus)
   at Microsoft.Ajax.Utilities.JSParser.ParseUnaryExpression(Boolean& isLeftHandSideExpr, Boolean isMinus)
   at Microsoft.Ajax.Utilities.JSParser.ParseExpressionStatement(Boolean fSourceElement)
   at Microsoft.Ajax.Utilities.JSParser.ParseStatement(Boolean fSourceElement, Boolean skipImportantComment)
   at Microsoft.Ajax.Utilities.JSParser.ParseStatements(Block block)
   at Microsoft.Ajax.Utilities.JSParser.InternalParse()
   at Microsoft.Ajax.Utilities.Minifier.MinifyJavaScript(String source, CodeSettings codeSettings)
   at System.Web.Optimization.JsMinify.Process(BundleContext context, BundleResponse response)
   at System.Web.Optimization.Bundle.ApplyTransforms(BundleContext context, String bundleContent, IEnumerable`1 bundleFiles)
   at System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context)
   at System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath)
   at System.Web.Optimization.AssetManager.DeterminePathsToRender(IEnumerable`1 assets)
   at System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths)
   at ASP._Page_Views_xxx__xxxxxxxx_cshtml.Execute() in xxxxxxxxxxxxxxxxxxx:line 479
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.StartPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult);

知道这里出了什么问题吗。而且,如果我从上述方法中删除async/await,绑定就会起作用。

尝试使用以下算法:

function onSuccess(result) {

       ....succes code
    };

function onError(xhr, exceptio) {

       .... error code
    };

function getData( serverUrl, id, mode ) {

       var data={id: id, mode: mode}
        $.ajax({
            async: true,
            url: serverUrl,
            type: "POST",
            cache: false,
            data: data,
            dataType: "json",
              contentType: "application/json"
            success: function (result) {

                onSuccess(result);
               return true;
            },
            error: function (xhr, exception) {
                onError(xhr, exception);
                return false;
            }
        });
    };