我的模型中有以下實體。使用AJAX在MVC中發送到控制器時,嵌套javascript對象屬性爲空
public class Provider
{
public int ProviderId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string SSN { get; set; }
public string NPI { get; set; }
public ProviderDetails ProviderDetails { get; set; }
}
public class ProviderDetails
{
public int ProviderDetailsId { get; set; }
public string Certification { get; set; }
public string Specialization { get; set; }
public string TaxonomyCode { get; set; }
public string ContactNumber { get; set; }
public string ContactEmail { get; set; }
public int ProviderId { get; set; }
}
我有以下控制器操作方法。
[HttpPost]
public ActionResult CreateProvider(Provider provider)
{
try
{
int providerCreationSuccessful = _repository.CreateProvider(provider);
if (providerCreationSuccessful == 1)
TempData["userIntimation"] = "Provider Registered Successfully";
return RedirectToAction("ShowTheListOfProviders");
}
catch (Exception Ex)
{
_logger.Error(Ex.Message);
return View("Error");
}
}
我正在使用AJAX發送數據到控制器,如圖所示。
self.createProviderDetails = function() {
$.ajax({
url: "/Provider/CreateProvider/",
type: "POST",
data: fillModel(),
async: false,
success: function (result) {
if (result.url) {
location.href = result.url;
}
}
}).fail(
function (xhr, textStatus, err) {
alert(err);
});
};
fillmodel功能是
var fillModel = function() {
var providerData =
{
ProviderId: self.providerID(),
FirstName: self.firstName(),
LastName: self.lastName(),
SSN: self.SSN(),
NPI: self.NPI(),
ProviderDetails: {
ProviderDetailsId: 0,
Certification: self.certification(),
Specialization: self.specialization(),
TaxonomyCode: self.taxonomyCode(),
ContactNumber: self.contactNumber(),
ContactEmail: self.contactEmail(),
ProviderId: self.providerID()
}
}
return providerData;
}
的對象數據是在使用Javascript側,但在控制器細,如這裏示出的嵌套對象爲空。
請讓我知道,至於我在做什麼wrong.I現在無法推測這一個。
內容類型:應用程序/ JSON它添加到Ajax請求 – sakir 2015-02-23 11:57:47
的'DefaultModelBinder'將正確綁定,如果名稱是按以下格式'ProviderDetails.ProviderDetailsId :0,ProviderDetails.Certification:someValue'等(點符號)。但是,如果你的屬性使用強類型助手構造你的視圖,你所需要的只是'data:$(yourForm).serialize(),' – 2015-02-23 12:06:09