2012-06-18 12 views
5

Bir Editör Şablonunda nokta seçili bir değer belirleyen bir Html.DropDownListFor var. Editör Şablonunu kısmi bir görünümle değiştirirseniz (HTML şablonunu Editör şablonunda kısmi görünümüne kopyala) çalışır.Html.DropDownListFor in Editor Şablonu seçili değeri ayarlamıyor

örnek kod

Modeli:

public class MainItemViewModel 
{ 
    public int MainItemId { get; set; } 
    public ItemViewModel ItemViewModel { get; set; } 
} 

public class ItemViewModel 
{ 
    public int ItemId { get; set; } 
    public string Text { get; set; } 
    public IEnumerable<SelectListItem> ItemSelectList { get; set; } 
} 

Kontrol:

public class DropDownController : Controller 
{ 
    // 
    // GET: /DropDown/ 

    public ActionResult Index() 
    { 
     var mainItemViewmodel = new MainItemViewModel(); 
     mainItemViewmodel.MainItemId = 2; 
     mainItemViewmodel.ItemViewModel = new ItemViewModel(); 
     mainItemViewmodel.ItemViewModel.ItemId = 2; 
     mainItemViewmodel.ItemViewModel.Text = "bla5"; 
     List<SelectListItem> someItems = new List<SelectListItem>(){new SelectListItem(){Value = "1",Text = "Test1"},new SelectListItem(){Value = "2",Text = "Test2"}}; 
     mainItemViewmodel.ItemViewModel.ItemSelectList = someItems; 
     return View(mainItemViewmodel); 
    } 

    [HttpPost] 
    public ActionResult Index(MainItemViewModel mainItemViewModel) 
    { 
     return RedirectToAction("Index"); 
    } 

} 

Açılan \ Index.chtml

@model MainItemViewModel 


@using (Html.BeginForm()) 
{ 
<br/> 
@Html.TextBoxFor(model => model.MainItemId) 
<br/> 
@Html.EditorFor(model => model.ItemViewModel) 

<input name="submit" type="submit" value="submit"/> 
} 

Açılan \ EditorTemplates \ ItemV iewModel.chtml

@model ItemViewModel 
    @{ 
    @Html.DropDownListFor(model => model.ItemId, Model.ItemSelectList, "Select Item"); 
    <br/> 

    @Html.TextBoxFor(model => model.Text); 
    } 

DropDownListFor (model => model.ItemId, Model.ItemSelectList, "Madde seçme"); 2.I aslında sen

Ben bütün dropdownlist başka dahilinde başka bir görünüm modeli olan hariç aynı şeyi yapıyor için otomatik seçmek gerekiyordu ve ince çalıştı düşünce seçmez.

editör Şablonlar ve dropdownlist ile bir problem var mı, ben bu soruna en cevapları baktım ve ben bu çözümleri baktım çalışır herhangi kesin bir cevap görmüyorum

Problem binding selected value to DropDownListFor inside Editor Template

DropDownListFor - does not select “Selected” value

cevap

0

ben size ItemViewModel

Sonra sadece emin olmak için de ItemId adında bir özellik var herhalde Görünüm ViewModel göndermeden önce Kontrolör bakımından değerini ayarlayın:

public ActionResult Edit() 
{ 
    var viewModel = new MainViewModel 
           { 
            ItemViewModel = new ItemViewModel{ ItemId = 7 } 
           }; 
    return View(viewModel); 
} 

daha seçeneklerim göndermeden önce ItemID ayarlayarak tam olarak yapıyorum my answer here

+0

bakmak isterseniz ViewModel.If tam olarak aynı model ile kısmi bir görünüm kullanırsa çalışır.Ancak soru neden Partition görünümü (aynı model) yerine editorFor.Right yerine çalışır? Şimdi kısmi Görünüm kullanıyorum – kwiri

+0

Evet teşekkürler ama Gerçekten aradığım şey değil. Gerçek MVC kaynağı (RTM3) ile bazı hata ayıklama yaptım ve gördüm onlar doğru bir şey değil.Onların varsayılan adı varsayılan değer elde etmek için kullanılan yolu beacause kırıyor.Bu yüzden kısmi görünümünde çalışır iken editorFor Şablonu doğru değeri seçmezsiniz.Bu yüzden benim downdownlistFor mvc kaynağı kullanarak basit bir test uygulaması yaptı ve açılan aralıkları kanıtladı.Strange Metin kutuları için özellik değerlerini elde etmenin farklı bir yönteminin kullanıldığını fark ettim. – kwiri

+0

Fikir, seçim yapmak için fazladan kod eklemeye gerek kalmadan açılan listeyi normal şekilde kullanmak istiyorum.Bu gibi açılan listeyi kullanıyorum ve gayet iyi çalışıyordu, sadece editör şablonuna (açılır pencereye) atmak istediğim bu görüntüyü yukarıda anlattığım gibi bir görünümde – kwiri

İlgili konular