5

ASP.NET MVC 2 (.NET 3.5) を使用しており、オプション リストとなるものを手動で定義する必要があります。そうすると、ドロップダウン メニューが表示され、各マニュアル エントリに「System.Web.Mvc.SelectListItem」が表示されます。

私のビューモデルは、リストを次のように定義しています。

    public SelectList YesNoList
    {
      get
      {
        List<SelectListItem> tmpList = new List<SelectListItem>();
        tmpList.Add(new SelectListItem {Text = "", Value = ""});
        tmpList.Add(new SelectListItem {Text = "Yes", Value = "1"});
        tmpList.Add(new SelectListItem {Text = "No", Value = "0"});
        YesNoList = new SelectList(tmpList,"");
      }
      private set{}
     }

ビューでは、Html.DropDownList を使用してこれを参照します。

Html.DropDownList("FieldName", viewmodel.YesNoList);

最終的な Web ページでレンダリングされることを期待しているものは次のようになります。

<select id="FieldName" name="FieldName">
  <option value=""/>
  <option value="1">Yes</option>
  <option value="0">No</option>
</select>

代わりに私は得る:

<select id="FieldName" name="FieldName">
  <option>System.Web.Mvc.SelectListItem</option>
  <option>System.Web.Mvc.SelectListItem</option>
  <option>System.Web.Mvc.SelectListItem</option>
</select>

タイプが返される理由がわからないので、私は途方に暮れています。ビューモデルの定義の何が問題なのか、またはより良い方法を誰かが指摘してくれれば幸いです。SelectList は、値を反復処理してテキストを表示するための一貫した方法を提供するため、C# クラスのコレクションから SelectList を派生させることをためらっていました。

事前に感謝します。誰かが助けてくれることを願っています。

乾杯、

J

4

3 に答える 3

8

ドロップダウンも処理できList<SelectListItem>ます。代わりにそれを送信してください。

Html.DropDownList("FieldName", viewmodel.YesNoList);

public List<SelectListItem> YesNoList
{
  get
  {
    List<SelectListItem> YesNoList = new List<SelectListItem>();
    YesNoList.Add(new SelectListItem {Text = "", Value = ""});
    YesNoList.Add(new SelectListItem {Text = "Yes", Value = "1"});
    YesNoList.Add(new SelectListItem {Text = "No", Value = "0"});
    return YesNoList;
  }
  private set{}
 }

あなたは実際に選択リストを作る際にそれを間違ってやっています。

そのはず:

new SelectList(tmpList, "Value", "Text"); 

そして、上記のコードを忘れてください。リストと値およびテキスト「キー」を指定すれば、任意のリストでこれを行うことができます

于 2010-09-17T16:01:49.797 に答える
0

エディターテンプレートを使用してそれを行うことができます。それを「はいいいえ」と呼び、次のコードを含めます...

@Modeltype Boolean

@Code
  Dim YesNoList = New List(Of SelectListItem)()
  YesNoList.Add(New SelectListItem() With {.Text = "Yes", .Value = True})
  YesNoList.Add(New SelectListItem() With {.Text = "No", .Value = False})

  Dim list = New SelectList(YesNoList, "Value", "Text", Model)
End Code

@Html.DropDownList("", list)

次に、モデル内で、プロパティに「YesNo」のUIHintを割り当てます。つまり、EditorForこのプロパティは、ブール値としてバインドされる優れたYes/Noリストを提供します。

于 2012-06-21T10:22:50.730 に答える
0

このコードを試してください:

OdbcDataReader iLRt1 = databaseFunctions.databaseConnection.getFromDatabaseReader("select * from groups order by head");

List<SelectListItem> Hello1 = new List<SelectListItem>();
Hello1.Add(new SelectListItem { Text = "Select All", Value = "Select All" });

while (iLRt1.Read())
{
    Hello1.Add(new SelectListItem { Text = iLRt1["head"].ToString(), Value = iLRt1["code"].ToString() });}

ViewData["myList2"] = Hello1;
于 2013-06-01T17:24:19.977 に答える