답변

0

오른쪽, 당신은 그 식별자를 잡고 코드의 항목 때문에 텍스트와 그것을 결혼 할 수 있습니다.

그래서;

public class MonthlyItemsFormViewModel 
{ 
    public SelectList Months; 
    public string SelectedMonth {get;set;} 
} 

;

public ActionResult Index() 
{ 
    MonthlyItemsFormViewModel fvm = new MonthlyItemsFormViewModel(); 
    FillData(fvm, DateTime.Now); 
    return View(fvm); 
} 

그리고 나서;

private void FillData(MonthlyItemsFormViewModel fvm, DateTime SelectedMonth) 
{ 
    List<string> months = DateTime.Now.MonthList(DateTime.Now); 
    fvm.Months = new SelectList(months, fvm.SelectedMonth); 
} 

다음보기에서;

<% using (Html.BeginForm()) { %> 
    <%=Html.DropDownList("selectedMonth", Model.Months) %> 
<%} %> 

그런 다음 게시물에;

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(FormCollection collection) 
{ 
    MonthlyItemsFormViewModel fvm = new MonthlyItemsFormViewModel(); 
    UpdateModel(fvm); 
    FillData(fvm, DateTime.Parse(DateTime.Now.Year.ToString() + " " + fvm.SelectedMonth + " 01")); 
    return View(fvm); 
} 

그것은 당신이 FVM에서 선택한 값을 잡아 다음 선택 목록의 항목과 그 값을 결혼 할 수 있음을 다시 포스트에있는 코드입니다.

이 코드는 내 코드에서 직접 옮겨 졌으므로 상황에 맞게 수정해야 할 수 있습니다.

의미가 있습니까?

0

당신이 시도한 코드 중 일부는 여기 kurozakura 편리 할 것입니다.

한편,

뷰를 모델에 바인딩 한 경우 UpdateModel을 사용하여 값을 다시 가져올 수 있습니다.

그래서 User라는 클래스에 바인딩하면;

User myUser = new User; 
TryUpdateModel(myUser); 

당신이 그것을 묶지 않았다면 에두아르도의 기술을 사용하고 다음과 같은 것을 사용하십시오; 당신은 뒤에 코드의 목록을 작성하고 각 옵션에 고유 한 식별자를 주면

public ActionResult MyViewsAction(FormCollection collection) 
{ 
    string a = collection["selectListCtrlname"]; 
} 
+0

잘 FormCollection을 사용했으나 행운이없는 경우에는 if 나는 그것이 저장되어있는 문자열 값을 리턴 할 것이고, 값은 dropdownlist의 값이다. 그러나 텍스트가 필요하다. – kurozakura

+0

각 옵션 항목의 Value 속성을 설정하지 않으면 원하는 것이 확실하지 않다. 텍스트이기도합니다. 따라서 옵션은 옵션의 텍스트로, 얼마나 멀리 얻을 수 있는지는 알 수 없습니다. 하나 더 방법이 있습니다, 다음 답을보십시오. – griegs

2

아래 클래스는 리플렉션을 사용하여 목록에서 선택한 값의 텍스트를 가져옵니다. 여러 개의 선택된 목록 항목은 지원되지 않습니다.

using System.Web.Mvc; 

/// <summary> 
/// Provides a set of static methods for getting the text for the selected value within the list. 
/// </summary> 
public static class SelectListExtensions 
{ 
    /// <summary> 
    /// Gets the text for the selected value. 
    /// </summary> 
    /// <param name="list">The list.</param> 
    /// <returns></returns> 
    public static string GetSelectedText(this SelectList list) 
    { 
     foreach(var item in list.Items) 
     { 
      var dataValuePropertyInfo = item.GetType().GetProperty(list.DataValueField); 
      var itemValue = dataValuePropertyInfo.GetValue(item, null); 

      if(itemValue != null && itemValue.Equals(list.SelectedValue)) 
      { 
       var textValuePropertyInfo = item.GetType().GetProperty(list.DataTextField); 
       return textValuePropertyInfo.GetValue(item, null) as string; 
      } 
     } 

     return null; 
    } 
} 
관련 문제