2011-09-09 24 views
0

ユーザーが追加または削除できるパラメータのリストをフォームに実装しようとしています。キャッチは、これを行うにはjavasciptなしでです。JSを使用せずにASP.NET MVCでリストから項目を削除する

@using (Html.BeginForm("New", "Films", FormMethod.Post, new { id = "NewFilmForm" })) 
    { 
     @if (Model.Any()) 
     { 
     <!-- List of directors that have already been added --> 
     <div id="AddedDirectors"> 
      @foreach (var director in Model) 
      { 
      <span> 
       @Html.Hidden("AddedDirectors", @director) 
       @Html.Raw(director) 
       <!-- JQuery button to remove director --> 
       <button class="deleteButton" type="button">x</button> 
      </span> 
      } 
     </div> 
     } 

     <!-- Interface for adding a new director --> 
     <div id="AddDirectorInterface"> 
      <!-- Jquery show/hide add single director interface --> 
      <button type="button" id="AddDirectorButton">+ &nbsp Add a director</button> 

      <div> 
       @Html.TextBox("AddDirector") 

       <!-- Post add button --> 
       <button name="SubmitButton" value="@Html.Encode(NewFilmActions.AddDirector)">Add</button> 
      </div>    
     </div> 

    <button type="submit" name="SubmitButton" value="@Html.Encode(NewFilmActions.Save)">Save film</button> 
} 
:これは(それはちょうど私が持っているものを説明することである、簡略化されたコードなので、かなり右ではないかもしれません)私はこのようなフォームを持っているASP.NET MVC 3

で行う必要があります

ここには2つの送信ボタンがあります。コントローラー内のswitchステートメントを介して処理され、NewFilmActions Enumに基づいて設定されたvalue属性によって識別されます。

AddDirectorの値を持つボタンを押すと、コントローラに投稿され、AddDirectorのテキストボックスに入力された名前がモデルに追加され、ユーザーが指定した名前をモデルに追加して戻します。既に追加されています(コメント欄を参照)。

私はすでにユーザーによって追加された名前を削除するためのボタンを追加したいと思います... 1つのボタンですべてを削除することができました。個々のボタンを追加したい。私はそれをする方法を理解することはできません。

値に名前を追加してからswitch文にデフォルト値を設定し、その値に指定された列挙型の値が含まれているかどうかをチェックする方法が考えられますが、

これを行う方法を教えてもらえますか、これを実装する方法についてのチュートリアル/説明を教えてください。

私はこれをJSを使って簡単に行うことができますが、基本的な機能や個人的な教育のためにこれを全面的に行うことを検討しています。

答えて

0

あなたのフォームの範囲を減らして、リストを含まないようにしてください。

次に、以下のようにループ内でフォームを削除することができます。

@foreach (var director in Model) 
{ 
    <span> 
     @Html.Raw(director) 
     @using (Html.BeginForm("Delete", "Films", FormMethod.Post, new { id = director.Id })){ <button name "DeleteButton" value="Delete">Delete</button>} 
    </span> 
} 

この例はまた、提案のために、このblog

+0

おかげで示され、それは通常は良いでしょうが、私はそれを行うことができますどのように確認し、保証しないものの内容メインの送信ボタンを押すと、リストがフォームにポストされます。関連するすべてのフィールドがメインフォーム内になければなりません。だから、私が思うような形からリストを取り出すことはできない。 –

+0

あなたのコードサンプルから「ディレクター」が何であるかは明らかではないと思います。私はあなたがディレクターの名前のリストを表示していると仮定しました。これらの名前はすでにどこかに保持されているので、リストを追加または削除するときには一度に1つしかできません。なぜリスト全体を戻す必要があるのでしょうか?私はあなたのフォームに他の入力を含めたら(それはあなたが表示していない)、それは問題になるでしょう – brodie

+0

申し訳ありません、私はフォーム全体を投稿しているはずです...私は新しい映画の入力を求めています。いくつかのディレクターとアクター(ここには示されていません)、タイトル、概要などをこのフォームにすべて入れることができます。 1つずつ追加された役員や役者を追加または削除するためのリストを作成したいと思います。難しいのは、このエントリーがまだデータベースに入っておらず、ディレクターとアクターが必ずしもdbに登録されているエントリーではないということです。私は何をしようとしているのか見ていますか? –

関連する問題