2012-03-20 5 views
0

MVC3 C#.Net Webアプリケーションがあります。私は、DB内のテーブルに基づいてチェックボックスのリストを(ドロップダウンまたはリストボックスのいずれかに)動的に表示する必要があります。テーブルには、1:500のエントリを含めることができます。次に、各選択に対してアクションを実行するために、選択されたチェックボックスをコントローラに渡す必要があります。実装に関するアイディアMVC3ドロップダウンリストボックスまたは動的チェックボックス付きリストボックス

答えて

1

これについては多くの方法がありますが、ここでは一般的なデモです。

あなたは、(この例では、同じように)のいずれかModelViewData[""]辞書やViewBag(MVC3の+を)チェックボックスの値と説明のリストを渡すことができます。

それらを通して、あなたの視野ループで次に

とグループにそれらを名前=「chxBxGroupName」を使用して、フォームに追加します。

すぐそれに投稿するコントローラのアクションを作成する名前=「chxBxGroupName」に一致するパラメータの命名と(この例ではint)値型のListをとります。

チェックされた値のリストを送信します。

投稿ページだけプリントアウトします:

123 
456 

// This is your landing page. It gathers the data to display to the user as checkboxes. 
public ViewResult MyPageWithTheCheckboxes() 
{ 
    // For example: Assume a Dictionary with the checkbox value and description 
    // Replace with DB call, etc. 
    return View(new Dictionary<int, string> { { 123, "Foo" }, { 456, "Bar" } }); 
} 

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Dictionary<int,string>>" %> 

<!-- Rest of HTML page... --> 

<form id="frm1" action="<%=Url.Action("MyPost")%>" method="post"> 
<% foreach (var item in Model) { %> 
     <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key%>"/> 
     <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
     <br/><br/> 
<% } %>  
    <input type="submit" value="Go!"/> 
</form> 

<!-- Rest of HTML page... --> 

public ContentResult MyPost(List<int> chxBxGroupName) 
{ 
    return Content(string.Join(Environment.NewLine, chxBxGroupName ?? new List<int>()), "text/plain"); 
} 
+0

@Jay ...ありがとう。見える。チェックボックスをドロップダウンリストに挿入することが可能かどうか知っていますか? – MikeTWebb

+0

@MikeTWebb Sorta、私が知っているものは何も組み込まれていません。これにはjQueryプラグインがあります。たとえば、次のようになります。http://code.google.com/p/dropdown-check-list/また、独自のソリューションを公開することもできます。 – Timeout

+0

@Jay ...ありがとう!私はそれをチェックします。 – MikeTWebb

0

をこのarticleはあなたに何を行う方法のアイデアを与える必要がありますよほしい。

0

ジェイが提供する回答は、必要なものを正確に達成します。あなたは、リスト内の項目を入れたい場合は、残念ながら、あなたが<select />のチェックボックスを持ってカント

<div style="height:40px;overflow:auto;"> 
    <% foreach (var item in Model) { %> 
      <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key% >"/> 
      <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
      <br/><br/> 
    <% } %> 
</div> 

以下のdiv制御嘘でマークアップを囲むことにより、それを行うことができますが、あなたが本当に望んでいたならば、それはのように見えますリストを選択すると、テキストボックスのonclickを処理してdivを表示するJQueryを追加できます。これは明らかにいくつかのjQueryを必要とし、価値がないかもしれません。

関連する問題