0

私はMVCプログラミングの初心者です。他の db テーブルから編集ビューに値を渡し、ビューを作成していくつかのドロップダウン リストに入力します。それはうまくいっています。編集と作成のためにコントローラーに次のようなコードがあります。

var db = new MyProgramDataContext();
Order order = orderRepository.GetOrder(id);
ViewData["customer"] = from c in db.customers
                       select new SelectListItem
                       {
                              Text = c.customer_name,
                              Value = c.customer_name
                       }
return View(order);

select ステートメントをリポジトリに移動して、少しすっきりさせて、編集と作成で同じ選択を繰り返さないようにしたいと考えています。

ViewData["customer"] = orderRepository.GetCustomers();

では、の戻り値Repositoryの型はですか? 私はそれを機能させることができないようです。GetCustomersSelectListItem

4

3 に答える 3

1

Rob Conery が彼のブログでどのように実装したかを確認してください。

http://blog.wekeroad.com/blog/asp-net-mvc-dropdownlist-and-html-attributes/

すべての顧客を取得してから、SelectList を作成し、それに応じて ViewData を設定できます。

于 2009-12-28T21:08:43.913 に答える
0

この方法で試してみてください

DDLHelper のようないくつかのヘルパー クラスでそのような種類の関数を移動します。

<select id="idXYZ" name="XYZ">
  <%= DDLHelper.DDl_order(Model.orderId)%>
</select>

DDLHelper のようなヘルパー クラスで関数を記述します。

    public static string DDl_order(int orderId)
        {
            string format = "<option value=\"{0}\" {2} >{1}</option>";
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.AppendFormat(format, "", "--Select--", "");

            List<Models.UrClass> urclass=orderRepository.GetCustomers();

            foreach (var item in client)
            {
                string ordid = item.orderId.ToString().Encrypt();

                if (item.ClientID == orderId)
                    sb.AppendFormat(format, orderid , item.OrdName,selected=\"selected\"");
                else
                    sb.AppendFormat(format, ordid , item.OrdName, "");
            }
            return sb.ToString();
        }
于 2009-12-29T14:14:10.357 に答える
0

FormViewModel クラスに SelectLists があり、編集および作成コードに部分ビューを使用しています。みんな、ありがとう。

于 2009-12-29T16:11:37.827 に答える