0

複数の文字列が渡された場合、id の文字列を int に変換する際に問題が発生しました。コードは次のようになります。

            for(int i = 0; i < Request.Params["service"].Length; i++)
            {
                int serviceID = int.Parse(Request.Params["service"]);

                db.ServiceAssignments.Add(serviceAssignment);
                serviceAssignment.locationID = locationID;
                serviceAssignment.ServiceID = serviceID;

                db.SaveChanges();
            }

1 つのパラメーターを渡すと、次のようになりますint.Parse(Request.Params["Service"]。= 1、これが機能し、データベースが保存されます。ただし、次の場合は次のようになります。

'1,2' の 3 つ。私が欲しいのは、1,2 ではなく、1 と 2 です。

1と2とは?

新しい場所を作成すると、その場所のサービスを選択できます。この問題の場合、サービス ID は 1 と 2 です。1 つのサービスを選択すると保存され、すべて問題ありません。2つ以上選択するとうまくいきません。

私はできるが:

Request.Params["Service"][i]結局、「サービス」は配列だからです。これがデータベースの問題やその他の混乱を引き起こす方法。

では、場所として選択したときに ID 1 と ID 2 を保存するために何ができると思いますか?

4

2 に答える 2

0

MVC 3はバインディングを理解するのに非常に強力です。ユーザーからサービスIDを取得するビューで何をしているのか正確にはわかりませんが、そこにフォームがあり、すべてのIDがintの場合、このようにすることができます変換は必要ないか、FormCollection を使用できます。MVC 3 で Request を使用するのは良い考えではないと思います。MVC のアイデア全体に実際には属していません。

public void Add(int[] service)
        {
            foreach (var item in service)
            {
                int serviceID = item;
            }
        }

また

 public void Add(FormCollection frm)
        {
            foreach (var item in frm.AllKeys)
            {
                if (item.StartsWith("service"))
                {
                    int serviceID = Int32.Parse(frm[item]);
                }
            }
        }

とにかく、これらはいずれも MVC ではありません。これらは機能するはずですが、ビューとコントローラーでモデルを使用することをお勧めします

于 2013-04-13T07:55:21.753 に答える