0

チェックボックスのリストとリストボックスを含むフォームがあります。

チェックボックスをオンまたはオフにすると、リスト内のオブジェクトを追加または削除して listBox 内のリストを変更する必要があります。これはどのように見えるかです:

ここに画像の説明を入力

フォームのその部分のコードは次のとおりです。

<div class="row-fluid">
                                <div class="span3">
                                     <label>Fonction(s):</label>
                                </div>
                                <div class="span9">                                        
                                    @Html.ListBoxFor(contact => contact.SelectedFonctionIds, Model.ListeFonctionsSelectList, new { disabled = "disabled" })                                
                                </div>
                            </div>


                            <div class="row-fluid">
                                <div class="span5 offset3">
                                    <div class="fonctions_container">
                                            @foreach (extranetClient.Models.Classes.FonctionContact fonction in ViewBag.Fonctions)
                                            {
                                                string coche = "";
                                                if ((@Model.ListeFonctions).Any(c => c.IdFonction == fonction.IdFonction))
                                                {
                                                    coche = "checked";
                                                }

                                                <input type="checkbox" @coche id="@fonction.LibelleFonction" onclick="javascript:AjouterFonction();" value="@fonction.IdFonction" />@fonction.LibelleFonction <br />
                                            }
                                    </div> 
                                </div>
                            </div>

誰もそれを行う方法を知っていますか?

私は Ajax について考えていましたが、それは厳密に型指定されたビューであり、すべてのデータがモデルに関連付けられているということです。

4

1 に答える 1

1

それが良い解決策かどうかはわかりませんが、リストボックスを部分ビュー (厳密に型指定されたものも) に配置し、AjouterFonction() JavaScript が Action への Ajax 呼び出しを行い、更新されたバージョンを含む PartialView を返すとどうなりますか?リストボックス?次に、jQuery を使用して、以前のリストボックスを新しいリストボックスに置き換えます。

コントローラーのアクション:

public PartialViewResult ActionName(<whatever you need here>)
{
    // Whatever logic you may need: which item was clicked, what should be added to the model object, etc....
    return PartialView("ListBoxPartial", yourModelObject);
}

部分ビュー ListBoxPartial:

@model YourModel
@Html.ListBoxFor(contact => contact.SelectedFonctionIds, Model.ListeFonctionsSelectList, new {disabled = "disabled" })

ビューでは、代わりに

<div class="span9">                                        
    @Html.ListBoxFor(contact => contact.SelectedFonctionIds, Model.ListeFonctionsSelectList, new { disabled = "disabled" })                                
</div>

あなたが持っているでしょう:

<div class="span9">                                        
   @Html.Partial("ListBoxPartial", Model)                        
</div>

AjouterFonction() は、新しいリストボックスを受け取った後、クラス「span9」で div を検索し、その内容を受け取ったデータに置き換えます。

これを解決するためのより良い方法があるかもしれませんが、これが最初に頭に浮かんだことでした。

于 2013-08-08T12:48:36.287 に答える