嗨,我正在使用 mvc3,并且我的站点中有一个链接,该链接当前通过
了一个参数,如下所示
<a href="/Call/@Model.id">Link To Call</a>
如您所见,我正在向我的 Action 传递一个id,现在我
需要传递另一个参数,但我不想更改
链接的路线和当前情况,我可以发送一些隐藏的东西吗?
我的链接看起来一样
我试图做到这一点,
Html.ActionLink
但它不起作用
请帮我 。提前致谢
嗨,我正在使用 mvc3,并且我的站点中有一个链接,该链接当前通过
了一个参数,如下所示
<a href="/Call/@Model.id">Link To Call</a>
如您所见,我正在向我的 Action 传递一个id,现在我
需要传递另一个参数,但我不想更改
链接的路线和当前情况,我可以发送一些隐藏的东西吗?
我的链接看起来一样
我试图做到这一点,
Html.ActionLink
但它不起作用
请帮我 。提前致谢
实现这一点的最简单方法是语义化 => 使用 HTML<form>
而不是链接。这样,所有输入字段值(包括隐藏的值)都将自动发送,您无需使用任何 javascript 来制作锚点的 href。所以锚点变成了表单的提交按钮。
是的,您可以将其作为查询字符串传递
<a href="/Call/@Model.id?parm="+ somevalue>Link To Call</a>
链接触发Http Get
请求,并且您想要随Get
请求一起发送的任何数据都被塞入查询字符串中。如果隐藏字段是动态的,您可以在超链接的单击事件上将数据附加到查询字符串,例如
$('#linkId').live('click', function(){
var href = $(this).attr('href');
href += "?param1=" + $("#hidden1").val() + "¶m2=" + $("#hidden2").val();
$(this).attr('href',href);
return true;
});
上面的代码将从隐藏字段中读取值并通过 url 发送它们。如果您不希望这样,您必须更改您的 UI 以使用表单或执行 ajax 请求。
我会做这样的事情,因为你的隐藏字段是动态的:
为您的链接添加一个类:
<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 值,而无需在方法中传递它。
我不认为你可以在不编辑 uri 的情况下做你在 GET 请求中要求的事情。我认为在 GET 请求的正文中使用发布数据在技术上是可行的,但不建议这样做。如果您确实选择编辑 uri,那么您将需要编辑操作上的参数列表以反映这些更改。
最好将此包裹在一个表单中并提交该表单。