2017-08-01 15 views
0

私はサイトにボタンをクリックすると、コントローラにデータを渡し、別のビューにリダイレクトする必要があります。私はAJAXで試してみましたが、別のビューにリダイレクトできないため動作しません。ASP.NET MVC AJAX新しいページにリダイレクト

私はJavaScriptを使って示唆されたいくつかの記事を読んでいますが、モデルがビューにも渡される場所はありませんでした(Propably I do just dumb ...)。あなたの助けのための

function buttonClick() { 
    $.ajax({ 
     type: 'POST', 
     url: '/Backup/Timestamp', 
     data: {iniName: selectedFile} 
    }); 
} 

public ActionResult Timestamp(string iniName) 
{ 
    //some code 

    return View(Model); 
} 

ありがとう:

今のところはこのようになります!代わりにAjaxを

+0

で発見することができます

@Html.ActionLink("Edit", // <-- Link text "Edit", // <-- Action Method Name new { id=item.CustomerID }, // <-- Route arguments new {@class="ui-btn", data_val="abc"} // <-- htmlArguments ) 

あなたがこの方法ポストだけとして「タイムスタンプ」したいですか? ? –

+0

データをコントローラに渡し、ロジックを実行して、別のビューを開く別のアクションにリダイレクトすることができます。 – Stefcho

+0

@Stefcho OPはajaxを使用しています。 Ajaxはあなたにリダイレクト結果を与えることは決してありません。 –

答えて

2

、@のUrl.Action

// creates a url like this <domain>/Backup/Timestamp 
// This should be in the cshtml 
<script> 
    var baseurl = '@Url.Action("Timestamp", "Backup")'; 
</script> 

// in your custom js file which should added below the baseurl initialization 
function buttonClick() { 
    location.href = baseurl +'?iniName=' + selectedFile 
} 

を使用@Url.Action()方法は、サーバー側でproccessedされます。あなたのアクションメソッドのパスを取得します。次に、そのURLにパラメータを連結して、単にそれにリダイレクトします。

1

オンボタンをクリックするだけで、いくつかのgetメソッドにリダイレクトできます。したがって、パラメータ 'iniName'は、リクエスト本体ではなくクエリ文字列として渡されます。

GETメソッドを使用すると、すべてのパラメータがクエリ文字列として渡されるためです。 POSTメソッドの場合、リクエストボディとして送信されます。

私はあなたのケースでは十分だと思います。だからあなたがする必要があるのは、あなたは以下のような "buttonClick"関数を置き換える必要があるということです。

function buttonClick() { 
    location.href = '@Url.Action("Timestamp", "Backup")'+'?iniName=' + selectedFile 
} 
+0

私は何か間違っているかどうかはわかりませんが、 "http:// localhost:32986/@Url.Action(%22Timestamp%22、%20%22Backup%22)?iniName = test。 ini " –

+0

@ErikT。別のjsファイルやcshtml自体の 'buttonClick'関数ですか? – adiga

+0

@adigaそれは別のjsファイル –

0

としてあなたは、Ajaxのアクションリンクを使用することができますAjaxのアクションリンクを使用するための完全な詳細は、link

関連する問題