0

Html.DropDownListForで選択した値を表示するのに問題があります。複数のドロップダウンを使用するビューがあり、それらすべてにデータが入力されますが、何も選択されません。すべてのドロップダウンに対して同じ選択の選択肢がありますが、選択された値は異なります。これが私のビューモデルです:

public class ViewPersonTargetingViewModel
{
    public List<PersonTarget> Targets { get; set; }
    public SelectList TargetStatuses { get; set; } 
}

これが私がSelectListを作成する方法です:

var statuses = DataAccess.GetPersonTargetStatuses();
TargetStatuses = new SelectList(statuses, "PersonTargetStatusUuid", "PersonTargetStatusName");

私のPersonTargetクラス:

public class PersonTarget
{
    public string PersonTargetStatusName { get; set; }
    public Guid PersonTargetStatusUuid { get; set; }
    //and more
}

そして、これが私がDropDownListを作成する方法です:

<%: Html.DropDownListFor(model => model.Targets[k].PersonTargetStatusUuid, Model.TargetStatuses)%> ここで、kはターゲットリストの反復です。

同じSelectListを使用して、すべてのDropDownにデータを入力します。これには、次のような情報が含まれています。

  • テキスト:A値:b2e4a939-06d8-4052-8abf-5c1b2a5e8591
  • テキスト:B値:0b59faaa-514d-4212-93cd-6b0a50b8f151
  • テキスト:C値:5575f3cf-33f8-41df-be73-a176a3db5ed5

たとえば、「B」を表示しようとすると、正しいターゲットステータスが表示されますが、最初の要素(「A」)が選択されたまま表示され、指定した値も出力されます。値は0b59faaa Model.Targets[k].PersonTargetStatusUuid-514d-4212-93cd-6b0a50b8f151( "B"のGUID)ですが、それでも"A"が表示されます。私はこれを修正する方法のアイデアを使い果たしました。どんな助けでも大歓迎です、ありがとう:)。

4

3 に答える 3

0

SelectedValueのプロパティを設定する必要がありSelectListます。たとえば、次のようになります。

<%: Html.DropDownListFor(model => model.Targets[k].PersonTargetStatusUuid, new SelectList(Model.TargetStatuses, "PersonTargetStatusUuid", "PersonTargetStatusName", Model.Targets[k].PersonTargetStatusUuid)) %>
于 2012-10-22T13:15:46.627 に答える
0

私は素早く汚い小さなトライアルプログラムを作りました、そしてそれは完璧に働きました。

あなたはあなたの質問でそれについて言及しました、しかし私は再確認します:

  • 選択リストのHTMLには、適切な値と名前があります
  • PersonTargetStatusUuidは正しいです

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var colours = new List<CarColour>() { new CarColour() { Id = Guid.NewGuid(), Colour = "Red" }, new CarColour() { Id = Guid.NewGuid(), Colour = "Blue" }, new CarColour() { Id = Guid.NewGuid(), Colour = "Green" } };
        ViewData["Colours"] = new SelectList(colours, "Id", "Colour");

        var car = new Car() { Id = Guid.NewGuid(), Name = "GreenCar", Colour = colours.First(cc => cc.Colour == "Green") };
        return View(car);
    }
}

public class Car
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public CarColour Colour { get; set; }
}

public class CarColour
{
    public Guid Id { get; set; }
    public string Colour { get; set; }
}

索引:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CarTest.Controllers.Car>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <%: Html.LabelFor(m => m.Id) %>
    <%: Html.TextBoxFor(m=> m.Id) %>

    <%: Html.LabelFor(m => m.Name) %>
    <%: Html.TextBoxFor(m=> m.Name) %>

    <%: Html.LabelFor(m => m.Colour) %>
    <%: Html.DropDownListFor(m=> m.Colour.Id, ViewData["Colours"] as IEnumerable<SelectListItem>) %>

</asp:Content>
于 2012-10-22T13:33:18.037 に答える
0

それで、ついに私は問題が私の単一のリストにあることを理解しました。何らかの理由で、個々のドロップダウンは異なるリストから入力する必要があることがわかりました。それはすべて今動作します:)

于 2012-11-01T13:43:16.547 に答える