1

これを機能させるために、さまざまな方法を試しました。モデルまたはコントローラーに何かが欠けているのではないかと思うので、3 つのパーツすべてを投稿します。

以前のアポイントメントでアドバイザーが選択したいくつかのアドバイス トピックを示すデータがデータベースにあります。アドバイザーがその予定を呼び出すと、アプリは、以前に選択されたトピックが強調表示された、考えられるすべてのトピックのリストを表示する必要があります。最後のビットを除いて、すべてが機能します。

選択したアイテムを個別に表示できるので、正しい情報を取得していることがわかります。それらを選択して表示することはできません。これがコードです。関係のない部分を切り取っています。

public class AppointmentModel
{ ...
    public string AdvisingTopicId { get; set; }
    public List<SelectListItem> AdvisingIdList { get; set; }
    public SelectList AdvisingTopicNames { get; set; }
}

public class HomeController : AdvisorBaseController
{ ...
        var topicCodes = appointment.advising_topic.ToList();

        var advisingTopics = new SelectList((from t in topicCodes
                              select t.name).ToList(), "name");

        var topicsList = (from t in db.advising_topic
                          select new SelectListItem
                          {
                              Selected = false,
                              Text = t.name,
                              Value = SqlFunctions.StringConvert((double)t.advising_topic_id).Trim()
                          }).ToList();

        foreach (var topicCode in topicCodes)
        {
            var selTopic = topicsList.Find(x => x.Value == topicCode.advising_topic_id.ToString());
            if (selTopic != null)
            {
                selTopic.Selected = true;
            }
        } ...
            var appointmentModel = new AppointmentModel
            { ...
                AdvisingTopicNames = advisingTopics,
                AdvisingIdList = topicsList,
            };

そしてビュー

@model AcademicAdvising.Models.AppointmentModel
<h3>Advising Topics</h3>
<ul>
    @foreach (var item in Model.AdvisingTopicNames)
    {
        <li>@Html.DisplayFor(x => item)</li>
    }
</ul>
    @Html.ListBoxFor(m=>m.AdvisingIdList, new SelectList(Model.AdvisingTopicNames, "Value", "Text", Model.AdvisingTopicNames.SelectedValue))

foreach は、選択した項目を正しく表示することに注意してください。それはテスト用であり、引き出されます。ListBoxFor は私が苦労している場所です。ここにあるものは機能しません (何も強調表示されていない完全なリストを示しています)。そして、それは私がさまざまなアプローチを試みたところですが、すべて失敗しました.

4

1 に答える 1

1

うっかり深いレベルに行きすぎたようです。listboxfor 関数が必要とするすべての選択リストが既にあります。

 @Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingTopicNames)

しかし、正直なところ、あなたがリストをどのように定義しているかを見ると、あなたが本当に望んでいるのは

 @Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingIdList)
于 2013-05-01T20:15:37.827 に答える