W mojej aplikacji ASP.NET 5 MVC 6, chcę opublikować z Ajaxem pewne dane do mojego kontrolera. Zrobiłem to już z ASP.NET MVC 5 i przetestowałem dokładnie ten sam kod w pustym projekcie ASP.NET MVC 5 i zadziałało, ale z nową wersją nie mogę i nie wiem dlaczego. Po wywołaniu Ajax mogę przejść do kontrolera, model jest tworzony, ale pola mają wartość null (lub false dla wartości logicznej). Tu jest mój kodu:ASP.NET 5/MVC 6 Ajax post Model do kontrolera
script.js:
var data = {
model: {
UserName: 'Test',
Password: 'Test',
RememberMe: true
}
};
$.ajax({
type: "POST",
url: "/Account/Login/",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
// Do something interesting here.
}
});
AccountController.cs:
[HttpPost]
public JsonResult Login(LoginViewModel model)
{
if (ModelState.IsValid)
{
//var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
//if (result.Succeeded)
//{
// //return RedirectToLocal(returnUrl);
//}
ModelState.AddModelError("", "Identifiant ou mot de passe invalide");
return Json("error-model-wrong");
}
// If we got this far, something failed, redisplay form
return Json("error-mode-not-valid");
}
LoginViewModel.cs:
public class LoginViewModel
{
[Required]
[Display(Name = "UserName")]
[EmailAddress]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
}
jakieś pomysły? Dzięki
próbował z '.done' zamiast sukcesu? – naveen
To nie jest problem. Udało mi się przejść do kontrolera, ale pola wewnątrz mojego modelu są puste. –
Twój DTO wydaje się być poprawny. hmmm – naveen