如何将参数值发布到某个actionlink

时间:2012-05-02 04:51:12

标签: asp.net asp.net-mvc-3

在我看来,我有10个链接每个链接与一些独特的价值相关联。现在,我希望在我的控制器操作中使用该关联值,并且从该操作我希望将流重定向到基于该值的其他操作。
但条件是我不想在网址上显示它。
我怎样才能实现这个目标?

  • 我尝试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值,即action name。
Confision :我不确定这是做这件事的正确方法。所以我问你们,我应该选择使用ajax帖子的路线图来解决我的目标。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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');
});