2011-10-28 12 views
0

このdropDownListをバインドするのは苦労します。これは単なる状態のリストです。 Model.Stateは "TX"ですが、私のドロップダウンリストは "AK"を表示しています。これはリストの最初の値です。何かご意見は? LinqToSQLを使用して、私のDataContextのラッパーである私のmuniSyndクラスでは、 Html.DropDownlistFor selectedValue

<%: Html.DropDownListFor(
       model => model.State, 
       new SelectList(
           muniSynd.getStatecodesDropDown(), 
           "Value", 
           "Text", 
           Model.State.ToString().Trim() 
       ) 
      ) 

      %> 

.....

public IList<StateCodeViewModel> getStatecodesDropDown() 
     { 
      var states = from p in this._MuniDc.Statecodes 
         select new StateCodeViewModel 
         { 
          Value = p.Statecode1.ToString().Trim(), 
          Text = p.Statecode1.ToString().Trim() 
         }; 
      return states.ToList(); 
     } 



public class StateCodeViewModel 
    { 
     public string Value{get;set;} 
     public string Text{get;set;} 
    } 

イムは、ここで私が試した

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Statecodes")] 
    public partial class Statecode 
    { 

     private string _Statecode1; 

     public Statecode() 
     { 
     } 

     [global::System.Data.Linq.Mapping.ColumnAttribute(Name="Statecode", Storage="_Statecode1", DbType="NVarChar(3)")] 
     public string Statecode1 
     { 
      get 
      { 
       return this._Statecode1; 
      } 
      set 
      { 
       if ((this._Statecode1 != value)) 
       { 
        this._Statecode1 = value; 
       } 
      } 
     } 
    } 

答えて

0

オブジェクトでありますあなたの問題を再現するには、下の例を参考にしてください:

ビュー

@using MVCWorkbench.Controllers 
@model IndexViewModel 

@{ 
    ViewBag.Title = "title"; 
} 

@Html.DropDownListFor(model => model.State, 
         new SelectList(HomeController.getStatecodesDropDown(), 
           "Value", 
           "Text", 
           Model.State.ToString().Trim() 
       ) 
      ) 

その後、他の示唆状態値がドロップダウンリストにあることを確認してわかりません。これはおそらく大文字小文字の区別の問題かもしれませんか?

+0

最初に、これで多くの時間を過ごしていただきありがとうございます。 linqを使用するとき、私は状態が "TX"として返されることを認識しました。私はトリムがそれを世話すると思った。 viewModel.State = "TX"を変更した場合。スペースを含む<----、それはあなたのために働くのですか?私は直接LinqObjectに私のモデルをバインドしています。そして、おそらく私はViewModelにバインドする必要があります。私が正しく理解している限り、ViewModelの変数をlinqObjectの変数と同じ名前にしている限り、私は編集、更新コマンドを実行すると、私はupdateModel()を呼び出すことができ、フォームコレクションの値にマップされます。右? – Patrick

+0

こんにちは。名前の整合性を保つなら、デフォルトのMVCモデルバインダーは、 'POST'の間に値をマッチさせることができます。トリムについては、動作していませんが、何が起こっているのか分かりません。コードはうまくいきます。なぜModel.Stateにまだスペースがあるのか​​わかりません。 –

関連する問題