2013-05-14 5 views
1

뷰에서 컨트롤러로 항목 목록을 저장하여 저장하려면 어떻게해야합니까? 나는 Viewbag를 사용할 수 있다고 생각하지만 실제로 뷰에서 컨트롤러로 데이터를 전달하는 방법은 없다.ViewBag를 사용하여보기에서 컨트롤러로 데이터 목록 전달하는 방법

이 당신이 /을 ViewData 컨트롤러에 ViewBag에서 데이터를 전달할 수 없습니다

[HttpPost] 
    public ActionResult Create(FormCollection collection) 
    { 
     ProductionRegistration pr = new ProductionRegistration(); 
     ProductionItem poi = new ProductionItem(); 

     poi = Viewbag.ProductionOrder; 

     pr.SaveOrder(Conn, poi); 
     return RedirectToAction("Index"); 

    } 

답변

5

내보기

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>ProductionOrderItem</legend> 


    <div class="editor-label"> 
     @Html.Label("ProducrionOrderNo"); 
    </div> 
    <div class="editor-field"> 
     @Html.TextBox("ProductionOrderNo", ViewBag.ProductionOrder as int) 

    </div> 

    <div class="editor-label"> 
     @Html.Label("OrderName") 
    </div> 
    <div class="editor-field"> 
     @Html.TextBox("OrderName", ViewBag.ProductionOrder as string) 
    </div> 
<div class="editor-label"> 
     @Html.Label("OrderDate") 
    </div> 
    <div class="editor-field"> 
     @Html.TextBox("OrderDate", ViewBag.ProductionOrder as DateTime) 
</div> 
     <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 
} 

내 컨트롤러를 시도하는 것이다. 단방향 (보기 위해 컨트롤러)입니다. 데이터를 컨트롤러로 다시 가져 오는 유일한 방법은 POST (post-body)를 게시하거나 쿼리 문자열에 함께 보내는 것입니다.

사실, 가능한 한 ViewBag를 최대한 피해야합니다. 그것은 편리함으로 추가되었고 대부분의 편의 방법과 마찬가지로 자주 남용되었습니다. 보기 모델을 사용하여보기에 데이터를 전달하고 게시물에서 데이터를 다시 받아들입니다. 마침내

를 실행 한 다음, 당신은 강력한 형식의 방식으로 필드를 구축하는 면도기의 [Foo]For 방법을 사용할 수 있습니다, 그리고

@model Namespace.For.My.OrderViewModel 

:

당신과 함께보기를 강력하게 입력 게시물 작업을 수행하려면 뷰 모델을 매개 변수로 받아들입니다.

[HttpPost] 
public ActionResult Create(OrderViewModel model) 
{ 
    ... 
} 

MV C의 모델 연결기가 게시 된 데이터를 연결합니다.

더 이상 역학 관계가 아닙니다. 모든 것이 철저히 철저히 형 식이므로 무언가 잘못되면 컴파일 시간이이고 런타임은이 아닙니다.

+0

를 의미합니까? –

+0

아니요, modell이 없습니다. 참조 파일에있는 DLL 파일을 작업하고 있습니다. –

+0

문제가되지 않습니다. * 뷰 모델 *을 여전히 가질 수 있습니다. 그것은 단지 클래스이지만 데이터베이스 나 다른 데이터 저장소에 묶이지 않은 클래스입니다. 귀하의 데이터는 어디에서나 올 수 있습니다. 당신은 단지 당신이 획득 한 데이터로 "뷰 모델"클래스를 인스턴스화하고 클래스를 ViewBag에 버려지는 다이나믹의 계량 적 쓰레기 대신에 뷰에 보냅니다. –

관련 문제