내보기
@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의 모델 연결기가 게시 된 데이터를 연결합니다.
더 이상 역학 관계가 아닙니다. 모든 것이 철저히 철저히 형 식이므로 무언가 잘못되면 컴파일 시간이이고 런타임은이 아닙니다.
아니요, modell이 없습니다. 참조 파일에있는 DLL 파일을 작업하고 있습니다. –
문제가되지 않습니다. * 뷰 모델 *을 여전히 가질 수 있습니다. 그것은 단지 클래스이지만 데이터베이스 나 다른 데이터 저장소에 묶이지 않은 클래스입니다. 귀하의 데이터는 어디에서나 올 수 있습니다. 당신은 단지 당신이 획득 한 데이터로 "뷰 모델"클래스를 인스턴스화하고 클래스를 ViewBag에 버려지는 다이나믹의 계량 적 쓰레기 대신에 뷰에 보냅니다. –