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ş:
MVC3 Razor, nasıl bir eylem içinde işl...
asp.net MVC3 razor: ekran actionlink k...
MVC3 Razor: kod bloğu içinde html Görü...
C# MVC3 Razor öğeleri alternatif @dosy...
MVC3 DropDownListFor - basit bir örnek...