2016-12-29 1 views
1

저는 MVC 앱을 가지고 있고 컨트롤러 중 하나가 클래스 모델 (클래스 A)의 CRUD로이 끕니다. 이 클래스 모델에는 다른 개체 (개체 B)의 목록 인 특성이 있습니다.이 개체 각각에는 문자열 이름 속성 만 있습니다.

textArea를 사용하여보기를 표시해야하며 사용자가 제출 한 후에 쉼표로 텍스트 영역 입력을 분할하고 각 값에 대해 유형 B의 객체를 만들고 그 결과를 리스트의 속성면도기 TextArea - Model 클래스 속성

요점은 어떻게 해야할지 모르겠다. 컨트롤러에서 사용자 입력을받을 수 있습니까?

내 textArea의 :

@Html.TextAreaFor(model => model.List, htmlAttributes: new { @class = "control-label col-md-2" }) 

답변

2

더 좋은 UI와 함께이 일을 가지 방법이 있습니다 (이것은 당신이 시작할 수 있습니다 Passing the collection of selected values from a Select2-Multi DropDownList to a Controller를)

그러나 정확한 질문에 대답 : 당신의 ViewModel에 문자열 속성을 사용하여 List 속성을 "래핑"합니다. 당신의 면도칼보기에서

public class MyViewModel 
{ 
    public List<string> MyList { get; set; } 
    public string MyListAsString 
    { 
     get 
     { 
      return string.Join(",", MyList); 
     } 
     set 
     { 
      MyList = value.Split(new char[] { ',' }).Select(x => x.Trim()).ToList(); 
     } 
    } 
} 

, 어느 곳으로 myList를 사용하지 않음 - ModelBinder를이 일을 할 때 get 및 set으로 myList 것 MyListAsString를 사용합니다.

@ Html.TextAreaFor (모델 => model.MyListAsString, htmlAttributes : 새로운 {@class는 = "제어 라벨 COL-MD-2"})

(모범 사례 : 나는 당신의 목록 속성을 이름을 변경 한 MyList, 기존의 식별자를 재사용하지 않기를 바란다. 레이블이 아닌 것에 "control-label"클래스를 사용하고 싶지 않을 것이다. "form-control"을 시도하자.

관련 문제