2016-09-19 3 views
0

저는 C#을 처음 사용합니다. 그러나 양식을 제출할 때 양식 값을 캐치하고 새 항목을 작성하여 코드에 따라 목록에 넣습니다 아래하십시오 .cshtml 파일에서이전 항목을 덮어 쓰지 않고 새 항목을 추가하십시오.

public ActionResult Movie() 
    { 

     int id = Convert.ToInt16(Request.Form["inputmovieid"]); 
     string name = Request.Form["inputmovietitle"]; 
     int year = Convert.ToInt16(Request.Form["inputproductionyear"]); 

     List<Movie> movies = new List<Movie>();    

     Movie movieitem = new Movie(id, name, year); 

     movies.Add(movieitem); 

     return View(movies); 
    } 

나는 다음 foreach 루프로 생성 된 항목을 인쇄하지만, 문제는 내가 새로운 항목에 대한 새 값으로 다시이 양식을 제출하면, 그것은 이전을 덮어이다 목록에.

원하는 결과 : 양식을 다시 제출할 때 이전 항목을 덮어 쓰지 않고 새 항목을 목록에 추가하고 싶습니다. 누구든지이 문제를 해결하기 위해 위의 코드를 수정하는 방법을 알고 있습니까?

+4

지금 당장 당신은 모든 요청에 ​​대해 새로운 목록을 얻습니다. 페이지 상태를 유지하기 위해 어딘가에 스토리지를 필요로 할 것입니다. 그런 다음 영화 목록을 그 상태에 놓아야합니다. 메모리, 데이터베이스 또는 클라이언트 측 자바 스크립트 기반 저장소 등에서 간단한 세션이 될 수 있습니다. –

+2

문제는 생성/추가 된 항목을 저장하지 않는다는 것입니다. 여기서하고있는 일은 매번 새로운 목록을 만드는 것입니다. 그 후에 새로 만든 목록에 하나의 항목을 추가하고 "표시"합니다. –

+0

C#을 처음 사용 했으므로 코드 샘플을 제공해 주시겠습니까? – eqinna

답변

0

보관 경로가 또는 인 데이터베이스에 데이터를 ViewState의 목록에 저장해야합니다.

뭔가 같은 :

public ActionResult Movie() 
{ 
    var list = ViewState["MyList"] as List<Movie>; 
    if(list == null) 
    { 
     list = new List<Movie>(); 
     ViewState["MyList"] = list; 
    } 
    int id = Convert.ToInt16(Request.Form["inputmovieid"]); 
    string name = Request.Form["inputmovietitle"]; 
    int year = Convert.ToInt16(Request.Form["inputproductionyear"]); 



    Movie movieitem = new Movie(id, name, year); 

    list.Add(movieitem); 

    return View(list); 
} 

그러나 asp.net의 내 지식은

[Serializable] 
public class Movie 
{ 
    ... 
} 

당신이 포스트 백을받을 때마다, 조금, 당신은 직렬화와 같은 영화 클래스를 표시해야 할 수도 있습니다 퇴색했다/reload, 전체 클래스가 재구성되므로 필드에 목록을 저장하면 도움이되지 않습니다. 그래서 그들이 viewstate를 발명했습니다. (html로 보낸 숨겨진 formfield)

+0

이 경우 데이터베이스를 사용하지 않고 문제를 해결하고 싶습니다. 이전 항목을 덮어 쓰지 않고 제출할 때 여러 항목을 목록에 추가 할 수 있기를 원하지만 메서드 외부에 목록을 추가하더라도 작업을 수행 할 수는 없습니다. . :-( – eqinna

+0

내 대답을 다시 읽을 수도 있고 필드에 저장하지 않을 수도 있고 viewstate에 저장하지 않을 수도 있습니다 (데이터베이스가 필요 없습니다) –

+0

코드를 복사하여 붙여 넣었을 때 "ViewState가 현재 컨텍스트 ". C# 정말 새로운 무엇입니까 그게 무슨 뜻인지 전혀 모른다? – eqinna

관련 문제