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 post 的路线图来解决我的目标。

4

2 回答 2

1

我认为您应该创建一个在单击时调用并传递唯一参数的 jQuery 函数。在该函数中,您可以使用 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 回答