2014-10-23 7 views
0

필자는 내보기에 다른 드롭 다운 목록과 데이터를 저장하기위한 입력 버튼을 가지고 있습니다. 저장시 ActionLult Save() 에 드롭 다운 목록에서 선택한 값이 필요합니다. 어떻게 내 컨트롤러 Actionresult 저장()보기에서 컨트롤러로 선택한 드롭 다운리스트의 값을 전달하는 방법

View: 
------ 
Collapse | Copy Code 
var docTypes = Model.DocumentTypes.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString()}).AsEnumerable(); 
@Html.DropDownList("SelectedDocumentType", docTypes, "--select--", new { @class = "ddSelect" }) 

Model: 
----- 
Collapse | Copy Code 
public IEnumerable DocumentTypes { get; set; } 

    Controller: 
    ----------- 
    Collapse | Copy Code 
    [HttpParamAction] 
    [HttpPost] 
    [ValidateInput(false)] 
     public ActionResult Save() 
{ 
    int DocumentType = // I have to assign the selected value of the dropdownlist here 
    } 

답변

1

이 값을 저장하는 모델에 속성을 추가에 드롭 다운리스트의 선택된 값을 얻을 수 있습니다. ID가 int이고 현재 ToString()을 사용할 필요가 없다고 가정합니다. 그래서 모델의 추가 :

public int DocumentTypeId {get;set;} 

는 그런 다음 값 DropDownListFor에 드롭 다운을 결합 Html 헬퍼 메소드를 사용한다. 그러면 다음과 같이 표시됩니다.

@Html.DropDownListFor(model => model.DocumentTypeId, new SelectList(Model.DocumentTypes, "Id", "Name"), "--select--", new { @class = "ddSelect" }) 

docTypes 변수 생성 및 초기화를 제거 할 수 있습니다.

EDIT : 컨트롤러 메서드 Save()에 매개 변수가 없습니다. POST 된 데이터를 읽으려면 모델을 매개 변수로 사용해야합니다. 이 MyModel 호출 된 경우에 따라서 컨트롤러 방식의 서명은 다음과 같습니다 다음

public ActionResult Save(MyModel model) 

등을 단순히 것 그것을에서 원하는 변수에 값을 할당 :

int DocumentType = model.DocumentTypeId; 
0

대신 int.Parse(drop.SelectedValue) 또는 int.Parse(drop.SelectedValue.Trim())를 사용해보십시오 Int32.Parse(drop.SelectedValue.ToString())입니다. drop.SelectedValue는 이미 문자열 형식이므로 ToString을 사용하여 변환 할 필요가 없습니다.

관련 문제