2011-10-19 54 views
0

獲取選定值我得到了以下型號:Control未從DropDownListFor

public class ViewBloqueioNotaFiscal 
{ 

    public ViewComboStatus ComboStatus = new ViewComboStatus(); 

    public class ViewComboStatus 
    { 
     public int? IdStatusSelecionado { get; set; } 
     public IEnumerable<SelectListItem> ComboStatus { get; set; } 
    } 
} 

下面的控制器方法:

public ViewBloqueioNotaFiscal.ViewComboStatus geraComboStatus(int? statusSelecionado) 
{ 
    ViewBloqueioNotaFiscal.ViewComboStatus combo = new ViewBloqueioNotaFiscal.ViewComboStatus 
    { 
     IdStatusSelecionado = statusSelecionado,  
     ComboStatus = new[]{ 
        new SelectListItem { Value = 1, Text = "Op1"}, 
        new SelectListItem { Value = 2, Text = "Op2"} 
     } 
    }; 
    return combo; 
} 

而且我的aspx是這樣的:

<%: Html.DropDownListFor(x => x.ComboStatus.IdStatusSelecionado, Model.ComboStatus.ComboStatus) %> 

它獲得完美的選擇顯示,但是當我提交我的表單時,我從控制器的post方法獲得模型perf除了這個組合以外,我的值接受空值進入模型。作爲我嘗試的第一個,我認爲有些事情是錯誤的。

你們能檢查一下嗎?如果你有更好的解決方案,我也想知道。

感謝您的幫助!

+0

只有當它們被選中時纔會出現值。您是否確定在通過郵寄方式提交時從組合框中選擇了某些內容? – Birey

+0

是的..我剛剛得到了兩個選項.. –

回答

2

您沒有綁定到視圖模型的正確屬性。你綁定到一些複雜的對象(ComboStatus),這是沒有意義的。

您應該下拉列表綁定到IdStatusSelecionado屬性:

<%: Html.DropDownListFor(
    x => x.ComboStatus.IdStatusSelecionado, 
    Model.ComboStatus.ComboStatus 
) %> 

的強類型DropDownListFor幫手需要在您的視圖模型至少兩件事情:

  1. 一個標量屬性(INT,十進制,字符串,...)將用於綁定到
  2. 值/文本對的集合。

如果值/文本對的集合包含的值與您用作第一個參數的標量屬性的值相等,則該項目將被預先選定。例如,如果您想預先選擇示例中的第二項,您可以在視圖模型上設置IdStatusSelecionado=2

附註:Model.ComboStatus.ComboStatus看起來很糟糕。請重命名。

+0

感謝您的幫助,兄弟!我重命名它。無論如何,我只是忘了把IdStatusSelecionado porperty放在這裏,但我的代碼就是這樣。而且我也有同樣的問題(即使x => x.ComboStatus.IdStatusSelecionado ..) –

+0

@ Dan-SP,這意味着IdStatusSelecionado的值在ComboStatus集合中找不到值。您可能還會嘗試以下操作:'ComboStatus = new SelectList(new [] {new SelectListItem {Value = 1,Text =「Op1」},new SelectListItem {Value = 2,Text =「Op2」},文本「,statusSelecionado)'分配行動中的ComboStatus屬性。 –

+0

正在讀取您的更新..秒.. –