Comment obtenir la valeur de datafieldtext ou SelectedText du SelectList en asp.net mvc?

voix
0

Pas javascript \ AJAX est utilisé.

Créé 27/08/2009 à 03:34
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
0

Une partie du code de ce que vous avez essayé serait utile ici kurozakura.

Pendant ce temps;

Si vous avez lié votre point de vue à un modèle, vous pouvez utiliser UpdateModel pour récupérer la valeur.

Donc, si vous liez à une classe appelée User puis;

User myUser = new User;
TryUpdateModel(myUser);

Si vous n'êtes pas lié, il utilise alors la technique par Eduardo et utiliser quelque chose comme;

public ActionResult MyViewsAction(FormCollection collection)
{
  string a = collection["selectListCtrlname"];
}
Créé 27/08/2009 à 04:21
source utilisateur

voix
0

Droit, si vous construisez la liste dans le code derrière et vous donner chaque option un identifiant unique, alors vous pouvez récupérer cet identifiant et l'épouser avec un élément de code et donc le texte.

Alors;

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

puis;

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

Et alors;

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

Alors à votre avis;

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

Puis, après l'arrière;

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

Il est dans le code sur le post de retour que vous pouvez saisir la valeur sélectionnée de la FVM avant de se marier cette valeur avec un élément dans votre liste de sélection.

ce code directement soulevé de mon code afin peut-être modifier en fonction de votre situation.

Est-ce que ça a du sens?

Créé 27/08/2009 à 04:59
source utilisateur

voix
2

La classe ci-dessous utilise la réflexion pour obtenir le texte de la valeur sélectionnée dans la liste. Plusieurs éléments de liste sélectionnés ne sont pas pris en charge.

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;
    }
}
Créé 20/04/2010 à 13:09
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more