2

SelectedItems の selectedValue オプションに問題があります。リストにあるにもかかわらず、何らかの理由で項目が選択されません...

私のコントローラー:

public ActionResult CreateTransformer(string edit)
{    
            var equipment = GenIDQueries.FindEquipment(edit);
            ViewData["Feeder"] = new SelectList(GenIDQueries.GetFeeders(equipment.OpsCentre.ToString()),
                                                "CircuitID",
                                                "CircuitDescription",
                                                equipment.Feeder);
        return View(equipment);
    }

equipment.Feeder は整数型です。

私の見解:

<p>
                <b><%=Html.LabelFor(m=>m.Feeder) %>:</b><font color="red">*</font>
                <%=Html.DropDownListFor(m=>m.Feeder, ViewData["Feeder"] as SelectList, "") %>
                <%= Html.ValidationMessageFor(m => m.Feeder)%>
            </p>

私の GenIDQueries.GetFeeders:

public static IEnumerable<Circuit> GetFeeders(string distNo)
        {
            int distNoNumber;
            if ( int.TryParse(distNo, out distNoNumber))
            {
                return ActiveRecordLinq.AsQueryable<Circuit>()
                .Where(x => x.DistrictCircuitRelations
                          .Any(y => y.District.DistrictNo == distNoNumber))
                .OrderBy(x => x.CircuitDescription)
                .Select(x => new Circuit
                {
                    CircuitID = x.CircuitID,
                    CircuitDescription = x.CircuitDescription
                });
            }
            return new List<Circuit>();
        }

選択したい要素が実際に GenIDQueries によって返されることを確認しましたが、ページが読み込まれるときにそのオプションが選択されることはありません。HTML ソース コードでは、アイテムも選択されません。

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

4

2 に答える 2

2

CircuitID選択した値を設定するときは、Feeder オブジェクトではなく、選択した値に設定する必要があります。

于 2011-03-28T21:12:58.923 に答える
1

なぜこのPlague of ViewDataを使用しているのですか? ViewDataMicrosoft のオープン スペース研究所で発生し、インターネットのブログ投稿や記事を通じて拡散したウイルスと考えています。

ビュー モデルは、ASP.NET MVC で使用する方法です。

モデル:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

コントローラ:

public ActionResult CreateTransformer(string edit)
{    
    var equipment = GenIDQueries.FindEquipment(edit);
    var items = GenIDQueries.GetFeeders(equipment.OpsCentre.ToString());
    var model = new MyViewModel
    {
        SelectedValue = equipement.CircuitID,
        Items = new SelectList(items, "CircuitID", "CircuitDescription")
    };
    return View(model);
}

意見:

<%= Html.DropDownListFor(m => m.CircuitID, Model.Items, "") %>
<%= Html.ValidationMessageFor(m => m.CircuitID) %>
于 2011-03-28T21:21:04.950 に答える