2016-11-08 5 views
-1

Asp.net MVCに関する問題があります。MVCはHTMLページを作成しますが、表示しません

私はこれが基本的にはちょうど私の従業員のIDを取得し、今私がいることを期待し

[HttpPost] 
    public ActionResult IndexCompletion(int id) 
    { 
     Mitarbeiter ma = new LeistungserfassungService.LeistungserfassungService().GetMitarbeiterById(id); 
     return View("IndexCompletion", new IndexCompletionViewModel{Mitarbeiter = ma}); 
    } 

私のコントローラでこれのActionResultを呼び出し、次のJavaScript

 $('#employeeTable tbody').on('dblclick', 'tr', function() { 
      var mitarbeiterId = table.row(this).data().Id;     
      $.post('@Url.Action("IndexCompletion")', { id: mitarbeiterId }); 
     }); 

でIndex.cshtmlページを持っていますこれは私に次のページを表示します:

@model Leistungserfassung.Models.IndexCompletionViewModel 

    @{ 
     ViewBag.Title = "Completion"; 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 

    <div class="content"> 
     <h2>Completion</h2> 
     @Model.Mitarbeiter.Nachname 
    </div> 

しかし、今起こるのはそれです私はGoogle Chromes開発ツールのネットワーキングタブで見ることができるように、ページをうまく作成しますが、リダイレクトはしません。 また、この.cshtmlファイルに直接移動しようとすると、ブラウザが見つからないことをブラウザに伝えます。

これについて何が問題になるか考えている人はいますか? 私は非常にjavascriptに新しいので、私は任意のアドバイスに感謝しています!

ありがとうございました。私のコードにドイツ語部品がありましたことをお詫び申し上げます。

+0

ajaxコールを行う全体のポイントは、同じページにとどまることです。新しいページに移動する場合は、** ajaxを使用しないでください**。 –

+0

AJAXを使わずにこのようなポストコールを取得する正しい方法は何ですか?私は$ Postがajax呼び出しの省略形であることに気づいていませんでした。 – Bobscure

+0

Submitボタン(または複数のフォーム)のフォームを持っています –

答えて

-1

あなたの助けを借りてくれてありがとう。 $ .postがAJAX呼び出しを作成することを理解したので、Doubleclickでフォームを作成し、自分のIDでフォームを送信するようにコードを変更しました。

 $('#employeeTable tbody').on('dblclick', 'tr', function() { 
      var mitarbeiterId = table.row(this).data().Id; 

      $('<form [email protected]("IndexCompletion") method="POST">' + 
        '<input type="hidden" name="id" value="' + mitarbeiterId + '">' + 
        '</form>').submit(); 
     }); 

これは素晴らしい作品(この問題を解決するためのはるかに良い方法です) 。あなたの助けをもう一度ありがとう。

0

JavaScriptを使用してサーバーに非同期のajax呼び出しを行うと、JavaScriptがユーザーを別のページにリダイレクトする必要があることを意味します。これを行うために、コントローラーポストメソッドは、リダイレクトするリダイレクトリンク(キー、値)アイテムを持つJavaScript(おそらくJSON)への応答を返さなければなりません。

+0

私は$ .post()が非同期のajax呼び出しを作成することを知らなかった。私は本当にオブジェクトを直接渡すことができることを本当に望んでいました。私はあなたのソリューションを試し、私はそれを実行する場合は投稿してください!ありがとう – Bobscure

+0

はい、これはjQueryの簡略版です。 https://api.jquery.com/jquery.post/サーバーは、ajax呼び出しがポストバックとして使用する必要がある成功メッセージを送り返す必要があります。 –

0

私はこれがあなたを助けてくれることを願っています。

var jsonObj = JSON.stringify({ 
       'id': mitarbeiterId 
      }); 

     $.ajax({ 
      url: '@Url.Action("IndexCompletion")', 
      type: "Post", 
      data: jsonObj, 
      async: false, 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       $("#divForReturnedViewFromController").html(msg); 
      }, 
     }); 
関連する問題