아주 이상한 방식으로 작동하는 기본 모델 바인더에 문제가 있습니다. 일부 데이터를 컨트롤러 동작에 POST하려고 시도하고 이러한 데이터 필드가 코딩 한 뷰 모델 클래스에 바인딩 될 것으로 예상합니다. 이 서버모델 바인더 매우 이상한 오류
에 도착 요청입니다public class CashRegisterViewModel
{
[Required]
[Display(Name = "CashRegisterID")]
public int CashRegisterID { get; set; }
[Required]
[Display(Name = "RegisterCode")]
public string RegisterCode { get; set; }
[Required(AllowEmptyStrings = true)]
[Display(Name = "Cash model")]
public string Model { get; set; }
[Required(AllowEmptyStrings = true)]
[Display(Name = "Concept")]
public string Concept { get; set; }
[Required(AllowEmptyStrings = true)]
[Display(Name = "IP Address")]
public string IPAddress { get; set; }
[Required(AllowEmptyStrings = true)]
[Display(Name = "External Cash Register Code")]
public string ExternalCashRegisterCode { get; set; }
[Required]
[Display(Name = "PoS ID")]
public int PoSID { get; set; }
}
이 피들러를 보면 컨트롤러 액션 메소드
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveCashRegister(CashRegisterViewModel model) {
if (ModelState.IsValid) {
[...]
}
}
은 다음과 같습니다
이
은보기 모델 클래스그러나 코드를 실행할 때 ModelState.IsValid
항상 false이며 ModelState를 살펴보면 다음 오류가 표시됩니다.
{"The parameter conversion from type 'System.String' to type 'MyProject.ViewModel.Common.CashRegisterViewModel' failed because no type converter can convert between these types."}
누군가이 동작에 대해 제안 할 수 있습니까?
와우. 알지 못 했어. 고맙습니다! – Lorenzo