2016-08-08 20 views
0

asp.net MVCを使用してWebサイトを実装しています。私は役割をクリックしてユーザーに役割を割り当てようとしています。私はいくつかの方法を試しましたが、残念ながら、私は失敗しました。私はそれは非常に素晴らしいアイデアではなかったと思うにもかかわらず、ActionLinkからActionResultに2つのパラメータを渡すには

コントローラ方法

[HttpPost,ActionName("AssignUserToRole")] 
[ValidateAntiForgeryToken] 
[CustomAuthorize(Roles ="SudoAdmin")] 
public ActionResult AssignUserToRole(long userId, long roleId) 
{ 
    new BusinessUser().AddRoleToUser(userId, roleId); 

     return RedirectToAction("Index"); 
} 

ビュー

@Html.ActionLink(@r.RoleName, "AssignUserToRole", "Users", new { userId = Model.UserId, roleId = r.RoleId }) 

は、最初に私はjQueryのAjaxのを試してみましたが、それは失敗しました。しかし、私はまだ "Ajax"でそれをやりたいのですが、私はページをリフレッシュせずに意味します。

は、私はアクションがPOSTにのみ応答するように設定されて、私の質問は

+3

"失敗"を定義します。あなたの 'ActionLink'はどうなりますか? – mxmissile

+0

最初にお返事ありがとうございます。 HTTP 404 –

+0

リンクをクリックしたときにロードしようとしているURLは何ですか?あなたのアクションメソッドは 'UsersController'の中にありますか? – Shyju

答えて

4

まず、あなたのすべてのための おかげで十分です願っています。つまり、POST経由でリクエストしない限り、他のリクエストメソッドに応答できるアクションがないため、404が表示されます。

リンクとして、GETを介して常にリクエストを行います。 JavaScriptを使用する場合は、clickイベントにバインドして、AJAXを使用してPOST経由でリクエストを送信できますが、POSTとして送信する必要があります。 $.getまたは$.ajaxのようなものをGETとしてメソッドに使用すると、機能しません。

理想的には、POSTを使用してアクションを実行する場合は、ビュー内にform要素を使用する必要があります。 CSSを使用すると、提出ボタンをリンクのようにスタイルすることができます(希望の場合はそのリンクをフォームにする必要があります)。

+0

ありがとう –

関連する問題