2012-11-01 3 views
0

ModelState가 유효하지 않기 때문에 개체 생성이 실패합니다. 어떤 도움을 주시면 감사하겠습니다.외래 키 관계로 인해 Modelstate가 유효하지 않습니다.

public partial class Timerecord 
{ 
    public int ID { get; set; } 
    public int locationID { get; set; } 
    public int teamID { get; set; } 
    public int actionID { get; set; } 
    public System.DateTime currentTime { get; set; } 

    public virtual Location Location { get; set; } 
    public virtual Action Action { get; set; } 
} 

정확하게 제공 Timerecord의 작성에 실패 오류로 인해 : 단순화 된 모델의 모습을 는 "매개 변수 변환 유형 '선택 System.String'에서 입력 'Project.Models.Action는'더 때문에 실패하지 형식 변환기는 이러한 형식간에 변환 할 수 있습니다. "} System.Exception {System.InvalidOperationException}

Timerecord의 모든 특성은 훌륭하지만 Action과 Location은 모두 Null입니다. 올바른지). 이물질을 직접 설정하고 모델을 재평가해야합니까, 아니면 생성자 Action (string)을 제공해야합니까?

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Timerecord tm) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       db.Timings.Add(tm); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception)); 
       ... 
      } 
      ... 

문제는 컨트롤러의 작성 방법에 의한 것으로 보인다 (간체) :

public ActionResult Create() 
    { 
     Timerecord tm = new Timerecord(); 
     LocationDBContext dbLoc = new LocationDBContext(); 
     ActionDBContext dbAct = new ActionDBContext(); 

     tm.currentTime = DateTime.Now; 
     tm.locationID = 1; 
     tm.actionID = 5; 
     tm.Location = dbLoc.Location.Find(tm.locationID); 
     /* THE PROBLEM: tm.Action = dbAct.Action.Find(tm.actionID); PROBLEM HERE */ 

     ViewData.Model = tm; 
     return View(); 
    } 

위치는 아무 문제가 발생하지 않습니다, 액션 않습니다 .. 어떤 도움 감사합니다!

+0

어디에서 오류가 발생합니까? –

+0

"동안"오류가 발생합니다 레코드 만들기 : public ActionResult Create (Timerecord tr) 이 메서드는 ModelState가 잘못되었습니다. – Gerard

+0

이 코드를 질문에 추가 할 수 있습니까? –

답변

0

이름이 변경된 활동 및 모든 활동이 정상적으로 작동합니다. 바인딩 (...)이 System.Action에 엉망이 되었습니까?!? 다른 설명은 없어. 아마도 누군가 이런 종류의 문제를 확인할 수 있습니다.

관련 문제