2010-07-04 2 views
1

IDName 필드가있는 데이터베이스 테이블 내에 저장된 열거 항목이 있습니다. 폼의 DropDownList 안에이 테이블에 저장된 값을 표시하려고합니다. 그런 다음 사용자는 값을 선택하고 양식을 제출합니다.데이터베이스 항목에서 DropDownList 만들기 및 양식 제출에 바인딩

I found a way to easily create a DropDownList from an enumeration (물론 테이블의 모든 레코드의 이름 필드로 DropDownList를 채우는 것이 가장 좋을지라도). 그러나 나중에 찾을 방법을 찾지 못했습니다 DropDownList를 다른 양식 값과 함께 데이터베이스 (FK - PK)에 넣을 양식에 제출합니다.

이러한 바인딩을 수행하는 방법을 보여주는 몇 가지 샘플 코드를 제공 할 수 있습니까?

업데이트 : 끝내 주셔서 감사합니다. 나는 또 하나의 질문을 가지고있다 : 은 AJAX을 통해 DropDownList 내용을 가져올 수 있으며 DropDownList와 ViewModel의 SelectList (ID와 Name 매개 변수 모두 포함)에 넣어야합니까? 필자는 사용자가 입력 한 내용을 기반으로 선택적으로 내용을 가져오고 ViewModel을 가져온 데이터로 채우고 싶습니다. 그런 다음 컨트롤러

public class MyViewModel 
{ 
    public int SelectedValue { get; set; } 
    public IEnumerable<SelectListItem> Items { get; set; } 
} 

:

답변

2

는 항상 모델을 정의함으로써 시작

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyViewModel 
     { 
      // TODO: Fetch from the database some enumerable collection 
      // containing Id and Name 
      Items = new SelectList(new[] 
      { 
       new { Id = 1, Name = "item 1" }, 
       new { Id = 2, Name = "item 2" }, 
      }, "Id", "Name") 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     // TODO: Do something with model.SelectedValue 
     return RedirectToAction("index"); 
    } 
} 

을 마지막으로 강력한 형식의보기 : 그것은 * 쉽게 *

<% using (Html.BeginForm()) { %> 
    <%: Html.DropDownListFor(x => x.SelectedValue, Model.Items) %> 
    <input type="submit" value="OK" /> 
<% } %> 
+0

인가? 바로 뷰 모델이라고합니다. 나는 그와 같은 용어를 뛰어 넘었지만 그것이 의미하는 바를 결코 알지 못했고 그것만큼 사용하기 쉽다. ASP.NET MVC에는 좋은 모델 바인더가 있습니다. –

+3

뷰 모델은 뷰 (뷰/편집 할 데이터)를 반영하기 위해 제공하는 클래스이므로 뷰와 밀접하게 연결되어 있습니다. Model은 비즈니스 논리를 나타냅니다. 비즈니스 엔티티를 나타내며보기에 표시되는 더 많은 필드를 포함하는 클래스가 될 수 있습니다. 리포지토리는 일반적으로 모델에서 작동합니다. 따라서 컨트롤러에서 모델 객체를 가져 와서 뷰 모델에 매핑하고이 뷰 모델을 뷰에 전달하는 저장소를 사용할 수 있습니다. 다른 컨트롤러 액션에서 동일한 모델을 페치 할 수 있지만 다른 뷰 모델에 매핑 할 수 있습니다. –

+0

도움을 주셔서 대단히 감사드립니다! 한 가지 더 빠른 질문 : Validation 속성 (예 : RequiredAttributes)을 사용하여 ViewModel의 속성을 꾸미면 폼이 제출되고 ViewModel이 Controller로 반환되거나 처음 코드를 만들 때 코드를 깨뜨리는 경우에만 적용됩니다 HttpGet 부분의 ViewModel 인스턴스? –

관련 문제