mvc

2015-01-21 4 views
0

컨트롤러 동작을 통해 한 뷰에서 다른 뷰로 데이터를 전송하는 데 문제가 있습니다. 첫 번째보기는 grid.mvc-Grid가 표시됩니다. 그리드의 행을 선택하면 해당 객체의 ID가 나타납니다. 이것을 컨트롤러에있는 작업으로 전송하여 데이터 필터링을 시도합니다. 그건 잘 작동합니다. (이상한 형식화하는 드려 죄송 :-).)mvc

public ActionResult Personen() 
{ 
    var persons = new ObservableCollection<Person>(); 
    if (TempData["Persons"] == null) 
    { 

    } 
    return View(persons); //Works perfect 
} 
else 
{ 
    persons = (ObservableCollection<Person>) TempData["Persons"]; 
    return View(persons);//does not redirect to that View 
} 

}

: 뷰가 충전 방법 II에

[HttpGet] 
public ActionResult PersonenById(int id) 
{ 
    var personen = new ObservableCollection<Person>(); 
    //Getting the data here :-) 

    foreach (DataRow r in access.Rows) 
    { 
     Person p = new Person(); 
     //do some stuff 
     personen.Add(p); 
    } 

    //return PartialView("Personen", personen); //does not work 
    TempData["personen"] = personen; 
    return RedirectToAction("Personen"); // redirect to another view 
} 

: 여기

필터이며

보기에서 다른보기로 데이터를 보내는 다른 방법이 있습니까? 시도 : 부분 반품; 돌아 가기보기 ("사람", 명); 및 기타 많은 것들.

+0

"이상한 포매팅에 대해 죄송합니다."사과하지 마십시오. 코드를 거의 읽을 수 없기 때문에 올바르게 포맷하십시오. –

+1

라인 끝이 올바르지 않습니다. – Hristo

+0

형식이 지정된 부분이지만 두 번째 코드 블록에 너무 많은 중괄호가있어 코드가 무엇인지 확실하지 않습니다. 또한 TempData [ "Persons"]! = TempData [ "personen"] – RobH

답변

0

는 다음과 같이 작동합니다 :

public ActionResult Personen(Person model) ... 

LE :

return RedirectToAction("Personen", model); 
또한

에서, "Personen"액션이 같은 인수로 모델을 가지고 있어야 나는 또한 당신이 시도 발견했습니다 TempData 개체를 통해 데이터를 보낼 수 있습니다. 색인 생성 된 개체의 이름이 동일해야합니다 (예 : TempData["person"] 도처)

희망 사항이 귀하의 질문에 대한 답변입니다.

+0

힌트를 보내 주셔서 감사합니다.하지만 TempData [ "person"]은 copy'n'paste로 인한 오류 일뿐입니다. targetview에 중단 점을 설정하면 뷰에서 중단 점에 도달하게됩니다. 그러나보기가 표시되지 않습니다. –

+0

'.cshtml' 또는'.aspx' 뷰를 의미합니까? 그렇다면 동일한 ObservableCollection 모델을 지정해야합니다. –

+0

안녕 Andrei. 예, .cshtml-View입니다. ObservableCollection 은 동일합니다 (imo). 그렇지 않으면 뷰의 그리드가 데이터를 가져 오지 않겠습니까? 브라우저에서 다른보기로 리디렉션되는 것은 발생하지 않습니다. 보기가 표시되지 않습니다. –