0

私の見解では、一意の値に関連付けられたすべてのリンクが 10 個あります。今、私はコントローラーアクションでその関連値が必要であり、そのアクションから、その値に基づいてフローを他のアクションにリダイレクトしたいと考えています。
しかし、条件は、URLに表示したくないということです。
どうすればこれを達成できますか?

  • 試してみajax.post/@Ajax.ActionLinkましたが、これを行うと、別のアクションへのリダイレクトが容易になりません。
  • 私がする必要があるルートで何かありますか?


意見

    <ul>@foreach (var item in Model)
    {<li>
  @Ajax.ActionLink(item.pk_name, "Index","Candidate", new { para1= item.para1 }
             , new AjaxOptions { HttpMethod = "POST" })</li>
    }</ul>



アクション

[HttPost]
public ActionResult(int para1)
{
return RedirectToAction(para1,"anotherController");
}


私は ajax post を使用して para1 で値を取得しています (これが主に必要でした) が、ここでも、アクション名である para1 値に基づいてアプリケーション フロー ベースをリダイレクトしたいと考えています。
Confision : ここで、これがこのことを行う正しい方法であるかどうかはわかりません。だから私は皆さんに、ajaxポストを使った作業のルートマップに行くべきだと尋ねています。それが私の目的を解決します。

4

2 に答える 2

1

クリックしたときに呼び出されるjQuery関数を1つ作成し、一意のパラメーターを渡す必要があると思います。その関数では、AJAXを使用して適切なコントローラーメソッドに投稿できます。

例:

<input type="button" id="@item.pk_name" onclick="getbuttonvalue(@item.para1);"  />

スクリプト内

 <script type="text/javascript">
 $(document).ready(function () {
function getbuttonvalue(para1) {
            $.ajax({
                cache: false,
                type: "POST",
                dataType: 'json',

                url: "/controller/method/" + para1,

                success: function (data) {
                }

            });

}

 });

</script>

于 2012-05-02T06:29:08.257 に答える
1

リンクを表示せずにクリックしたものに基づいてユーザーをリダイレクトするだけでよい場合、これを実現する最善の方法はクライアント側のコーディングであると思います。

私の意見では、このような複雑さの少ないリダイレクト用にページを変更するために、サーバーを介してリクエストを受け取る必要はありません。

意見

// HTML
// Might be broken, been awhile since I worked with MVC
// Can't really remember if that's how you put variables in HTML
<ul id="button-list">
    @foreach(var item in Model)
    {
        <li class="buttonish" data-para1="@item.para1">@item.pk_name</li>
    }
</ul>

// JS
// I wouldn't do any server related work
$('#button-list li.buttonish').click(function(){
    // Your controller and action just seem to redirect to another controller and send in the parameter
    window.location.href = "/controller/method/" + $(this).data('para1');
});
于 2012-05-02T07:03:46.670 に答える