2014-01-14 45 views
0

我有一個簡單的表單,它使用Jquery發佈到Web API2項目中的/ api/account/register。錯誤路由到註冊方法,Web API 2

的形式非常簡單:

<body> 
    <form id="userData"> 
     <input type="text" id="userName" placeholder="Name"/> 
     <br /> 
     <input type="password" id="password" placeholder="Password"/> 
     <br /> 
     <input type="password" id="ConfirmPassword" placeholder="Password" /> 
     <br /> 
     <input type="button" id="register" value="register" /> 

    </form> 
    <pre id="output"></pre> 

    <script src="Scripts/jquery-1.10.2.js"></script> 
    <script type="text/javascript"> 

     var showResponse = function (object) { 
      $("#output").text(JSON.stringify(object, null, 4)); 
     }; 

     var register = function() { 

      var url = "/api/account/register"; 
      var data = $("#userData").serialize(); 
      $.post(url, data).always(showResponse); 
      return false; 
     }; 

     $("#register").click(register); 
    </script> 
</body> 

然而,當我點擊註冊按鈕,我被呈現:

{ 
"readyState": 4, 
"responseText": "{\"Message\":\"An error has occurred.\",\"ExceptionMessage\":\"Object reference not set to an instance of an object.\",\"ExceptionType\":\"System.NullReferenceException\",\"StackTrace\":\" at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()\\r\\n--- End of stack trace from previous location where exception was thrown ---\\r\\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\\r\\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\\r\\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\\r\\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()\"}", 
"responseJSON": { 
    "Message": "An error has occurred.", 
    "ExceptionMessage": "Object reference not set to an instance of an object.", 
    "ExceptionType": "System.NullReferenceException", 
    "StackTrace": " at System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()" 
}, 
"status": 500, 
"statusText": "Internal Server Error" 

}

+0

你能告訴我們你的控制器代碼嗎? –

回答

1

有問題序列化形成。 要做到這一點正確,您需要將名稱添加到每個元素:

<form id="userData"> 
    <input type="text" id="userName" name="userName" placeholder="Name" /> 
    <br /> 
    <input type="password" id="password" name="password" placeholder="Password" /> 
    <br /> 
    <input type="password" id="ConfirmPassword" name="ConfirmPassword" placeholder="Password" /> 
    <br /> 
    <input type="button" id="register" name="register" value="register" /> 
</form> 

這是獨立的jQuery。每個表單元素都必須有一個名稱,作爲成功控制

+0

typo/api/account/register。 – CSharpNewBee

+0

好吧,不知道何時創建本地數據庫,但我的Webconfig文件指向一個不存在的mdf。這一定是錯誤的原因。 – CSharpNewBee

0

好的,通過重命名配置中的默認數據庫名稱,然後發送一個帖子到api/account/register創建數據庫。