SORU
11 Ocak 2011, Salı


Çeteleler MVC3 Razor DropDownListFor

Benim proje MVC3, ben bulamıyorum bir şey için güncelleme almaya çalışırken:

ÇETELELER basit bir veri türü var:

public enum States()
{
  AL,AK,AZ,...WY
}

Bu veri türü içeren bir model benim görüşüme göre: Açılan/bir SelectList olarak kullanmak istiyorum

public class FormModel()
{
    public States State {get; set;}
}

Bu kısmi sınıf için otomatik oluşturmak görünüm için kullanın, Bu türü göz ardı eder. hoş düz ön:

Ve benim AJAX ile gönderme işlemi - POST Yöntemi JSON vurduğumda numaralama değerini ayarlayan basit bir seçim listesi Seçili öğe olarak ihtiyacım var.

Ve görünümü daha (???!):

    <div class="editor-field">
        @Html.DropDownListFor(model => model.State, model => model.States)
    </div>

tavsiye için şimdiden teşekkür ederiz!

CEVAP
16 Aralık 2011, Cuma


Bu şekilde daha basit bir çözüm buldum: http://coding-in.net/asp-net-mvc-3-method-extension/

using System;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace EnumHtmlHelper.Helper
{    
    public static class EnumDropDownList
    {
        public static HtmlString EnumDropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> modelExpression, string firstElement)
        {
            var typeOfProperty = modelExpression.ReturnType;
            if(!typeOfProperty.IsEnum)
                throw new ArgumentException(string.Format("Type {0} is not an enum", typeOfProperty));     
            var enumValues = new SelectList(Enum.GetValues(typeOfProperty));
            return htmlHelper.DropDownListFor(modelExpression, enumValues, firstElement);
}   }   }

Bir satır jilet gibi yapar:

@Html.DropDownListFor(model => model.State, new SelectList(Enum.GetValues(typeof(MyNamespace.Enums.States))))

Ayrıca bağlantılı makalede bir uzantısı yöntemi ile bunu yapmak için kod bulabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DroidModderX ROOT Master

    DroidModderX

    14 ŞUBAT 2011
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • nigahiga

    nigahiga

    21 Temmuz 2006