2011-10-19 6 views
0

から選択された値を取得していない:コントロールは、私は、次のモデルを得た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) %> 

それは完全に選択のために表示されますが、私のフォームを送信すると、コントローラからの私のポストメソッドは、モデルのperfこのコンボ以外の値では、モデルにnull値を受け取ることになります。私が試した最初のものとして、何かが間違っていると思います。

あなたは私のためにそれをチェックできますか?あなたがこれについてもっと良い解決策を持っているなら、私はあまりにも知りたいのです。

助けてくれてありがとう!

+0

値は選択されたときにのみ表示されます。あなたは何かがコンボボックスから選択されていることを確認していますか? – Birey

+0

ええ..私はちょうど2つのオプションを持っています.. –

答えて

2

ビューモデルの正しいプロパティにバインドしていません。あなたはいくつかの複雑なオブジェクト(ComboStatus)にバインドされていますが、これは意味をなさないものです。

あなたはIdStatusSelecionadoプロパティにドロップダウンリストをバインドする必要があります。

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

A強く型付けされたDropDownListForヘルパーは、あなたのビューモデル上に少なくとも2つのことが必要です。

  1. スカラプロパティ(int型を、 10進数、文字列、...)
  2. 値とテキストのペアの集合。

値/テキストペアのコレクションに、最初の引数として使用したスカラープロパティと等しい値のアイテムが含まれている場合、このアイテムは事前選択されます。たとえば、例で2番目の項目を事前に選択する場合は、ビューモデルにIdStatusSelecionado=2を設定します。

サイドノート:Model.ComboStatus.ComboStatusはひどく見えます。名前を変更してください。

+0

助けを借りてくれてありがとう!病気の名前を変更します。とにかく、IdStatusSelecionadoのプロパティをここに入れるのを忘れてしまったのですが、私のコードにはそれがあります。そして、私は同じ問題を抱えています(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 "}、" Value "テキスト "、statusSelecionado)'を使用して、アクション内の 'ComboStatus'プロパティを割り当てます。 –

+0

更新情報を読む.. sec。 –

関連する問題