0

フォーム内に複数の複数選択が含まれている JQuery.form.js からシリアル化されたフォーム データを受信して​​処理する .Net Web サービスを作成しています。

Web サービスに送信されるシリアル化されたデータには、次のようなコンテンツが含まれます。

&travelwith=4&travelwith=5&travelwith=6

フィールド 'travelwith' は、フォームの選択フィールドで利用可能な 10 個のアイテムのうち 3 個のアイテムの複数選択を示しています。

たとえば、次のような強力な型付きクラスを構築できますか。

public class StoreUserSet
{
public Array travelwith { get; set; }
public string otherfield { get; set; }
....
}

次に、Web メソッドに次のようなオブジェクトを取得させます。

StoreUserSet StUserSet = new StoreUserSet(); // Create new class instance.

[WebMethod()]
public bool ProfSet1(StoreUserSet StUserSet)
{
...
}

複数選択フィールド 'travelwith' のさまざまな値がクラスの配列 travelwithに自動的に解析されるので、3 つの項目の値をカンマ区切りのリストとして LINQ 経由で SQL に保存できますか?

私はまだここまでたどり着いていません..私が計画したアプローチについてフィードバックを得られると思っていました。

フィードバックをありがとう、マーティン。

4

1 に答える 1

0

私のKeyLargoサイトの JQuery フォームには単一選択フォーム データと複数選択の両方が含まれていたため、複数選択を Sql 内の単一フィールドに格納できるようにする必要がありました。

コンマで区切られた文字列を持つSql単一フィールドにデータを格納するためにArray型を使用して、サーバー上で複数の選択を処理しようとすると問題が発生しました。したがって、上記の質問を解決する方法は、厳密に型指定されたクラスを string[] で作成して、AJAX 経由でサーバーに渡されたシリアル化された複数選択データをキャプチャすることでした。

public class StoreUserSet
{
public string[] travelwith { get; set; }
public string otherfield { get; set; }
....
}

Rick Strahl の便利な方法を使用して、クライアントから渡される複数選択配列データを処理しました。

public static string[] FormMultiple(this  NameValue[] formVars, string name)
{
var matches = formVars.Where(nv => string.Equals(nv.name, name,
StringComparison.OrdinalIgnoreCase)).Select(nv => nv.value).ToArray();
return (0 == matches.Length) ? null : matches;
}

次のように配列設定値を反復処理するには:

profile_travelwith = formVars.FormMultiple("profile_travelwith");

次に、次のように複数選択 string[] 配列の値を結合します。

profile_travelwith = string.Join(",", StUserSet.profile_travelwith);

プロファイルの関連するテーブル フィールドにデータを簡単に保存できるようにします。

于 2012-08-07T07:48:15.317 に答える