0

TempData とバインドしているドロップダウン リストがあります。最初にすべての値が表示されます。特定の値を選択した後、その値はデータベースに正しく保存されます。しかし、選択した値は表示されません。以下にコードを示します。 .

取得のために、私はインデックスアクションコントローラに書いています

TempData["Clients"] = (IEnumerable<SelectListItem>)ClientService.GetALLClientsName().Select(C=>new SelectListItem { Value=C.CLIENT_ID.ToString(),Text=C.CLIENT_NAME});

編集後に取得すると、選択した値を取得できません。以下のようにカミソリで書いています

@if (TempData["SelectedClientName"] != null && TempData["SelectedClientId"] != null)
                       {
                           foreach (SelectListItem sli in lstClients)
                           {
                               if (sli.Value.Equals(TempData["SelectedClientId"].ToString()))
                               {
                                   sli.Text = TempData["SelectedClientName"].ToString();
                                   sli.Value = TempData["SelectedClientId"].ToString();
                                   sli.Selected = true;
                                   break;    

                               }
                           }

                       }

                      @Html.DropDownList("drpClientName", lstClients, "--Select--")

lstClients の TempData["Clients"] を変換しました。助けてください。

4

3 に答える 3

1

DropDownListFor を使用する必要があり、ViewModel には ClientId フィールドが含まれています。

あなたのViewModel:

public class YourViewModel{
    public int ClientId {get;set;}
}

意見:

@Html.DropDownListFor( x => x.ClientId, new SelectList( Clients.GetClientsList(Model.ClientId), "Value", "Text", Model.ClientId))

Clients.cs (など):

public static List<SelectListItem> GetClientsList(int client)
{
    var dataContext = new YourDataContext(  );
    var data = dataContext.GetModelsFn(client).ToList();

    var result = ( from res in data
               select new SelectListItem()
                          {
                              Text = res.ClientName,
                              Value = res.ClientId.ToString(),
                              Selected = res.ClientId == client
                          } ).ToList();

    return result;
}
于 2013-06-19T06:41:32.470 に答える