0

Нет javascript \ AJAX для использования.Как получить значение поля данных данных или выбранного контекста списка выбора в asp.net mvc?

+0

Вам это нужно в контроллере? Если вы указали опцию «VALUE», вы получите это значение в коллекции форм (вы можете искать текст, связанный со значением в БД или модели) –

ответ

0

справа, если вы строите список в коде позади и вы даете каждый вариант уникальный идентификатор, то вы можете получить этот идентификатор и женятся его с элементом кода и, таким образом текст.

So;

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

then;

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); 
} 

Это в коде на посте назад, что вы можете получить выбранное значение из МКО, а затем жениться на это значение с элементом в вашем списке выбора.

этот код снят непосредственно с моего кода, поэтому его необходимо изменить в соответствии с вашей ситуацией.

Имеет ли это смысл?

0

Некоторый код того, что вы пробовали, был бы полезен здесь kurozakura.

В настоящее время;

Если вы связали свой взгляд с моделью, вы можете использовать UpdateModel, чтобы вернуть значение.

Так что, если вы привязаетесь к классу User;

User myUser = new User; 
TryUpdateModel(myUser); 

Если вы не связали его, используйте технику Эдуардо и используйте что-то вроде;

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

ну, я действительно использовал FormCollection, но не повезло, если я сделал то, что он вернет только строковое значение, которое будет сохранено, значение находится из значения выпадающего списка, но мне нужен текст – 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; 
    } 
}