1

複数のフィールドがあり、リストを含むモデルがあります。ユーザーが親フィールドを入力してから複数の子フィールドを入力できるビューが必要です。私が抱えている問題は、追加する子オブジェクトの数がわからないことです。必要な数の子オブジェクトを追加できるビューが必要です。

子オブジェクトの部分ビューが必要だと思いますが、部分ビューをページに複数回追加できるようにするにはどうすればよいですか?

編集

ここに私がこれまでに持っているものがありますが、append メソッドのコードを画面上のテキストとしてレンダリングするだけです。

 $(document).ready(function () {
     $("#AddProgramTrainingButton").click(function (e) {



         $("#ProgramTraining").append('@@{Html.RenderPartial("_ProgramTrainingDetailsCreate",new Online.Models.ProgramTrainingDetailsViewModel());}</br></br>');

         e.preventDefault();

     });
 });

---------2回目の編集

jquery を使用して、コントローラーで部分ビューを呼び出して部分ビューをロードしようとしましたが、これも機能しません。

     $(document).ready(function () {
         $("#AddProgramTrainingButton").click(function (e) {

             alert("button clicked!");



             $('#ProgramTraining').load('@Url.Action("GetCreatePartialView","PGTController")');
             return false;



         });
     });

// controller method
        public ActionResult GetCreatePartialView() 
        {
            return PartialView("_ProgramTrainingDetailsCreate.cshtml",new PGTProgramTrainingDetailsViewModel());
        }

ファイル拡張子を削除する必要があり、jquery でいくつかの終了文字が欠落していました

4

4 に答える 4

2

これを機能させました。部分ビューを div でラップしました

 $(document).ready(function () {

     // This section is to remove a Dynamically added Training section when a button is clicked
     $("#RemoveTrainingButton").live('click', function (e) {
         e.preventDefault();


         $(this).closest('div').remove();

     });



     // This section adds a Training section to the page when a button is clicked
     $("#AddProgramTrainingButton").click(function (e) {
         e.preventDefault();
         var url = '@Url.Content("~/PGT/GetCreatePartialView")';
         $.get(url, null, function (data) {
             $('#ProgramTraining').append(data);
         }, 'html').error(function (error) {
             alert(error);
         });








     });
 });

    [HttpGet]
    public ActionResult GetCreatePartialView() 
    {
        return PartialView("_ProgramTrainingDetailsCreate",new PGTProgramTrainingDetailsViewModel());
    }
于 2012-07-17T21:37:01.747 に答える
2

ロナルド、このブログ投稿を見てください...私はそれを使用していますが、完璧です。

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

于 2012-07-17T20:22:41.300 に答える
0

フィールドの追加を示す画像/ボタンを用意してから、クリックすると、フォームに部分ビューまたはその他のフォームフィールドを挿入する簡単なハンドラーを作成することをお勧めします。挿入されたフィールドの名前を同じに保つと、それらはサーバーに配列として送信され、そこから解析して見つけることができます。

于 2012-07-17T15:49:36.423 に答える
0

jQuery を使用して部分ビューを取得し、それをメイン ページの DOM に挿入できます。loadおよびajax関数を確認してください。非同期ロードをトリガーするには、ある種のコントロールを接続する必要があります。部分的なビューはコントローラー アクションから返されます (完全なビューとは異なります。たとえば、/Controller/MyPageAction および /Controll/MySubformAction で、MyPageAction は完全な結果で、MySubformAction は部分的な結果です)。

明示的なユーザー アクション (ボタン クリック) に依存するか、ユーザーが使用可能な最後の子フィールドのセットに入力し始めるとすぐに、新しい子フィールドのセットを自動的に提供することができます。

于 2012-07-17T18:34:43.580 に答える