当我点击asp.net mvc3中的链接时如何发送隐藏参数

时间:2012-05-22 07:35:52

标签: c# html asp.net-mvc-3 hyperlink action

嗨我正在使用mvc3,我的网站中有一个链接,目前正在通过  一个参数如下所示

<a href="/Call/@Model.id">Link To Call</a>

你可以看到我正在将 id 传递给我的Action,现在我是 需要传递另一个参数,但我不想改变路线
 和链接的现状,我可以发一些隐藏的东西  我的链接看起来相同

  

我尝试通过 Html.ActionLink 执行此操作,但它不起作用

请帮帮我。在此先感谢

5 个答案:

答案 0 :(得分:2)

实现这一目标的最简单方法是在语义上做到这一点=&gt;使用HTML <form>而不是链接。这样,包括隐藏的所有输入字段值将自动发送,您不需要使用任何javascript来制作锚点的href。因此,锚点成为表单的提交按钮。

答案 1 :(得分:0)

是的,您可以将其作为查询字符串

传递
<a href="/Call/@Model.id?parm="+ somevalue>Link To Call</a>

答案 2 :(得分:0)

链接触发器Http Get请求以及要与Get请求一起发送的任何数据都会在查询字符串中被推送。如果隐藏字段是动态的,您可以在超链接的点击事件上将数据附加到查询字符串,如

$('#linkId').live('click', function(){
   var href = $(this).attr('href');
   href += "?param1=" + $("#hidden1").val() + "&param2=" + $("#hidden2").val();
   $(this).attr('href',href);
   return true; 
});

上面的代码将从隐藏字段读取值并将其发送到网址。如果您不想要这个,您必须更改UI以使用表单或执行ajax请求。

答案 3 :(得分:0)

我会做这样的事情,因为你的隐藏字段是动态的:

在您的链接中添加一个类:

<a class="link-call" href="/Call/@Model.id">Link To Call</a>

注意您的href应该类似于

href="@Url.Action("Index", "Call", { id  = @Model.id })"

然后,使用jQuery,您可以轻松填写​​链接并发出请求。

$(function() {

    $(".link-call").click(function(evt) {

        evt.preventDefault; // don't jump to /Call/2 automatically

        var url = $(this).attr("href") + "?"; // this will hold /Call/2?

        // append your hidden fields
        url += "hf1=" + $("#hf_001").val();
        url += "&hf2=" + $("#hf_002").val();
        url += "&hf3=" + $("#hf_003").val();

        // make the call
        document.location.href = url;
    });

});

您的控制器可能看起来像这样

public ActionResult Index(int id, string hf1, string hf2, string hf3)
{

}

如果您的路线有ID,您可以从路线中获取ID值,而无需在方法中传递。

答案 4 :(得分:0)

我不认为你可以在没有编辑uri的情况下在GET请求中做你所要求的。我认为技术上可以在GET请求的主体中使用post数据,但不可取。如果您确实选择编辑uri,则需要编辑操作的参数列表以反映这些更改。

最好以表格形式包装并提交表格。