2012-05-02 173 views
0

我想獲得一些JSON功能的工作,它基本上儘可能簡單,但由於某種原因,我得到一個500內部服務器錯誤我的控制檯和應用程序永遠不會到達控制器。我已經嘗試了幾乎所有的東西,但是代碼非常簡單,我已經放棄了通過反覆閱讀相同的幾行代碼來嘗試查找錯誤。在MVC3中的JSON:500(內部服務器服務器錯誤)

這裏是我的腳本:

  $("#saveAdvisorOption").click(function() { 
      // Create a JSON object: 
      alert("OK"); 
      var OptionsModel = { "AdvisorNewsFeed": $("#advisorCheckBox").val() }; 
      alert($(OptionsModel.AdvisorNewsFeed)); 
      $.post("/Account/ChangeOptionForAdvisor", OptionsModel, function (data) { 

      }); 
     }); 

這裏是我的模型:

public class OptionsModel 
{ 
    public string AdvisorNewsFeed { get; set; } 

    public OptionsModel(string AdvisorNewsFeed) 
    { 
     this.AdvisorNewsFeed = AdvisorNewsFeed; 

    } 
} 

}

這裏是我的控制器:

public class AccountController : Controller 
{ 
    [HttpPost] 
    public ActionResult ChangeOptionForAdvisor(OptionsModel option) 
    { 

     //Return something 
     return Json(option, JsonRequestBehavior.AllowGet); 
    } 

我有一個突破指出返回聲明但它永遠不會運行。

任何幫助,非常感謝。

+0

你爲什麼不給我們例外......? – gdoron

回答

3

你可能只需要添加OptionsModel類的空構造函數。沒有空的構造函數,MVC不能實例化類。

+0

+1。他需要將dataType指定爲'json',但這是另一回事。 – gdoron

+0

@gdoron這是不正確的。 – scottm

+0

爲什麼呢? – gdoron

1

@scottm得到了主要問題。

這就是說:

你可能需要告訴jQuery的你希望得到一個json對象:

$.post("/Account/ChangeOptionForAdvisor", OptionsModel, function (data) {...}); 

要這樣:

$.post("/Account/ChangeOptionForAdvisor", OptionsModel, function (data) { 
    ...}, 'json'); //<====== 
+2

這應該不是500服務器錯誤的原因(這個修復是客戶端,*在得到響應之後*)。 –

+0

@FelixKling。確實,添加了一個註釋 – gdoron