我承認,我很困惑:返回JSON在MVC的Action 3.0
我試圖返回,我已經轉換成JSON的簡單對象如下:
viewModel.updateCoder = function (coder) {
var coderJson = ko.toJSON(coder);
var coderJsonString = ko.utils.stringifyJson(coderJson);
$.ajax({
url: "provider/UpdateCoder",
type: 'POST',
dataType: 'text',
data: coderJsonString,
contentType: 'text/csv',
success: function() { alert("Updated!"); }
});
我RouteTable入境看起來是這樣的:
routes.MapRoute(
"UpdateCoder",
"provider/UpdateCoder/{coderDTO}", // URL with parameters
new { controller = "Provider", action = "UpdateCoder", coderDTO = UrlParameter.Optional }
);
我的Controler動作看起來是這樣的:
[AcceptVerbs(HttpVerbs.Post)]
public string UpdateCoder(string coderDTO)
{
var rslt = "success";
//var coder = coderDTO.CoderDTOToCoder();
return rslt;
}
我得到的UpdateCoder參數(字符串coderDTO)爲空;
這是我的秋天後衛位置,我寧願發送一個JSON對象(coderJson)的動作,但我得到一個錯誤:「此對象定義無參數的構造函數。」當我這樣做,我改變參數類型如下:
[AcceptVerbs(HttpVerbs.Post)]
public string UpdateCoder(**CoderDTO coderDTO**)
{
var rslt = "success";
//var coder = coderDTO.CoderDTOToCoder();
return rslt;
}
連同:ValueProviderFactories.Factories.Add(新JsonValueProviderFactory());在Global.asax
的CoderDTO類看起來是這樣的:
public class CoderDTO
{
public Int32 Id { get; set; }
public String CoderCode { get; set; }
public String Sal { get; set; }
public String LName { get; set; }
public String FName { get; set; }
public String MI { get; set; }
public String Facility { get; set; }
public String Title { get; set; }
public Boolean? IsContract { get; set; }
public Boolean? IsInactive { get; set; }
public Boolean? IsDeleted { get; set; }
public String Comments { get; set; }
public String AlternateId { get; set; }
public int CasesCoded { get; set; }
public CoderDTO(Coder coder)
{
Id = coder.Id;
CoderCode = coder.CoderCode;
Sal = coder.Sal;
LName = coder.LName;
FName = coder.FName;
MI = coder.MI;
Facility = coder.Facility;
Title = coder.Title;
if (coder.IsContract != null) IsContract = coder.IsContract;
if (coder.IsInactive != null) IsInactive = coder.IsInactive;
if (coder.IsDeleted != null) IsDeleted = coder.IsDeleted;
Comments = coder.Comments;
AlternateId = coder.AlternateId;
}
public Coder CoderDTOToCoder()
{
var coder = new Coder
{
Id = Id,
CoderCode = CoderCode,
Sal = Sal,
LName = LName,
FName = FName,
MI = MI,
Facility = Facility,
Title = Title
};
coder.IsContract = IsContract ?? false;
coder.IsInactive = IsInactive ?? false;
coder.IsDeleted = IsDeleted ?? false;
coder.Comments = Comments;
coder.AlternateId = AlternateId;
return coder;
}
}
的coderJsonString看起來是這樣的:
{"Id":201,"CoderCode":"GP ","Sal":null,"LName":null,"FName":null,"MI":null,"IsContract":false,"IsInactive":false,"Comments":null,"CasesCoded":0,"isBeingEdited":false}
這是一個漫長的一天!謝謝你的幫助,我正在吃晚飯!
你可以包括與要發佈到控制器的JSON的示例代碼段沿DTO對象? – Jesse