1

この ViewData と DropDownList には、個別の値が必要です。「プロジェクト」を作成すると、「スタイル値」を何か(文字列フィールド)に設定できます。たとえば、「ポップ」です。ドロップダウン フィルター内のインデックス ページには、"Pop" が含まれています。スタイル値に「Pop」を含む 2 つ目のプロジェクトを作成すると、ドロップダウンに 2 回表示されます。私はそれをしたくありません。

2 番目にしようとしているのは、ドロップダウン フィルターにデフォルト値を設定して、その値を選択すると、すべてのフィルターが削除され、追加されたすべてのプロジェクトの完全なリストが表示されるようにすることです。

私が自分自身を明確にしなかった場合は、そう言ってください。

これが私のコードでの方法です。

私のコントローラー:

public ActionResult Index()
    {
        var projects = from s in db.Project select s;
        var projectList = db.Project.ToList();

        if (Request.Form["FilterStyle"] != null && Request.Form["FilterStyle"] != "")
        {
            int i = int.Parse(Request.Form["FilterStyle"]);
            projects = from s in db.Project
                       where s.ID == i
                       select s;
        }

        if (Request.Form["FilterStyle"] == null)
        {
            projects = from s in db.Project select s;
        }

        ViewData["Styles"] = new SelectList(projectList, "ID", "Style");

        return View(projects);
    }

私の見解 :

@using (Html.BeginForm())
{
<table>
    <thead>
        <tr align="left">

        ....

            <th>
                Style :
                <br /><br />
                @Html.DropDownList("FilterStyle", (SelectList)ViewData["Style"], " ", new { onchange = "this.form.submit()" })
            </th>

        ....

        </tr>    
    </thead>

    <tbody>

    ....

    </tbody>
</table>
}
4

1 に答える 1

1

クエリをビューに渡す前に、明確な値のみを取得することを確認する必要があります。

projects = (from s in db.Project
                       where s.ID == i
                       select s).Distinct().ToList();



  var projectList = db.Project.Distinct().ToList();
于 2013-03-27T16:04:58.540 に答える