[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
質問
ご注意ください。 この質問は9年以上前のものです。
新しい質問を検索するか、以下の回答から特定のバージョンのMVCを検索するのがベストな方法です。
もし、あなたのバージョンに対応する回答が見つかった場合は、その回答にあなたが使用しているMVCのバージョンが含まれていることを確認してください。
<サブ
<サブ
(元の質問は以下から)
ちょっと奇抜な感じがしますが、私の知る限りでは、このようなやり方があるのですね。
私はオブジェクトのコレクションを持っており、ユーザーがそれらの1つまたは複数を選択することを望んでいます。 これは、私に "form with checkboxes." と言っています。私のオブジェクトは "selected" の概念を持っていません(それらは、wcf 呼び出しをデシリアライズして形成された初歩の POCOです)。 だから、私は次のようにします。
public class SampleObject{
public Guid Id {get;set;}
public string Name {get;set;}
}
ビューで
<%
using (Html.BeginForm())
{
%>
<%foreach (var o in ViewData.Model) {%>
<%=Html.CheckBox(o.Id)%> <%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
そして、コントローラでは、ユーザーがチェックしたオブジェクトを把握する方法はこれだけです。
public ActionResult ThisLooksWeird(FormCollection result)
{
var winnars = from x in result.AllKeys
where result[x] != "false"
select x;
// yadda
}
また、ユーザーがチェックした項目については、FormCollection の値が単なる true ではなく "true false" としてリストアップされます。
明らかに、何か見落としている。 これは、html フォーム内で操作されるコレクション内のオブジェクトは、以下の方法で更新されることを念頭に置いて構築されていると思います。
UpdateModel()
またはModelBinderを経由しています。
しかし、私のオブジェクトはこのために設定されていません。それは、この方法しかないということですか? 他に方法があるのでしょうか?
どのように解決するのですか?
Html.CheckBoxは何か変なことをしています。結果のページのソースを表示すると
<input type="hidden" />
これは、各フォーム要素に表示されている "true false" の値を説明するものです。
これはASP.NET MVC Betaで間違いなく動作するので、試してみてください。
Html.CheckBox()を使用する代わりに、これをビューに設置します。
<% using (Html.BeginForm("ShowData", "Home")) { %>
<% foreach (var o in ViewData.Model) { %>
<input type="checkbox" name="selectedObjects" value="<%=o.Id%>">
<%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
チェックボックスはすべて
selectedObjects
で、その
value
は、対応するオブジェクトのGUIDです。
そして、以下のコントローラのアクションに投稿します (Response.Write() の代わりに何か役に立つことをする、似たようなものでもよいです)。
public ActionResult ShowData(Guid[] selectedObjects) {
foreach (Guid guid in selectedObjects) {
Response.Write(guid.ToString());
}
Response.End();
return (new EmptyResult());
}
この例では、チェックしたボックスのGUIDを書き込むだけです。ASP.NET MVCは、選択されたチェックボックスのGUIDの値を
Guid[] selectedObjects
また、Request.Form コレクションの文字列を解析してインスタンス化された GUID オブジェクトを生成することもできます。
関連
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み] チェックボックスとそのラベルをクロスブラウザーで一貫して揃える方法
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
-
[解決済み] [Solved] ASP.NET MVCで404を適切に処理するには?
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] Kendo UI MVC用パスワードテキストボックス
-
[解決済み] Razor View throwing "The name 'model' does not exist in the current context".
-
[解決済み] 既存のASP.NET MVC 4 WebアプリケーションのプロジェクトにWeb APIを追加するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC ビューエンジンの比較
-
[解決済み】ASP.NET RazorのHTML.ActionLinkとUrl.Actionの比較
-
[解決済み] [Solved] Replace line break characters with <br /> in ASP.NET MVC Razor view
-
[解決済み】ASP.NET MVC 3 RazorでAjax.BeginFormを使用する。
-
[解決済み] ソートロジックは、モデル、ビュー、コントローラのいずれに配置するのがよいのでしょうか?[クローズド]
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?