Нет javascript \ AJAX для использования.Как получить значение поля данных данных или выбранного контекста списка выбора в asp.net mvc?
ответ
справа, если вы строите список в коде позади и вы даете каждый вариант уникальный идентификатор, то вы можете получить этот идентификатор и женятся его с элементом кода и, таким образом текст.
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);
}
Это в коде на посте назад, что вы можете получить выбранное значение из МКО, а затем жениться на это значение с элементом в вашем списке выбора.
этот код снят непосредственно с моего кода, поэтому его необходимо изменить в соответствии с вашей ситуацией.
Имеет ли это смысл?
Некоторый код того, что вы пробовали, был бы полезен здесь kurozakura.
В настоящее время;
Если вы связали свой взгляд с моделью, вы можете использовать UpdateModel, чтобы вернуть значение.
Так что, если вы привязаетесь к классу User;
User myUser = new User;
TryUpdateModel(myUser);
Если вы не связали его, используйте технику Эдуардо и используйте что-то вроде;
public ActionResult MyViewsAction(FormCollection collection)
{
string a = collection["selectListCtrlname"];
}
ну, я действительно использовал FormCollection, но не повезло, если я сделал то, что он вернет только строковое значение, которое будет сохранено, значение находится из значения выпадающего списка, но мне нужен текст – kurozakura
Я не уверен, что вы хотите, если вы не установите атрибут Value для каждого параметра как текст. Таким образом, вариант может выглядеть как , хотя я не знаю, как далеко это вас доставит. Есть еще один способ, см. Следующий ответ. – griegs
В приведенном ниже классе используется отражение, чтобы получить текст для выбранного значения в списке. Несколько выбранных элементов списка не поддерживаются.
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;
}
}
Вам это нужно в контроллере? Если вы указали опцию «VALUE», вы получите это значение в коллекции форм (вы можете искать текст, связанный со значением в БД или модели) –