ASP.NET MVC在链接中传递数据而不是通过url

时间:2010-08-26 20:42:08

标签: asp.net-mvc-2 http-post

我不知道这是否会破坏MVC的目的,但我想要一个接受2个变量的控制器,但我不知道如何将它们传递给url。有没有简单的方法呢?

public ActionResult Return(string user_id, int item_id)

现在我正在制作像这样的链接

<%: Html.ActionLink("Return", "Return", new {user_id = item.user_id, item_id = item.item_id}) %>

是否有一种简单的方法可以将数据发布到控制器,而不是通过URL传递数据

3 个答案:

答案 0 :(得分:1)

您有几个选项,但不能使用ActionLink,因为它只构建了一个HTML a元素。

您可以使用SESSION将数据从控制器传递到控制器。只需确保在之后清除那些会话变量。

您也可以使用表单POST数据。

这完全取决于您所需的界面,以及何时可以获得该数据。

答案 1 :(得分:0)

使用隐藏输入的表单:

<% using(Html.BeginForm()) { %>
    <%: Html.Hidden("user_id", item.user_id) %>
    <%: Html.Hidden("item_id", item.item_id) %>
    <button type="submit">Return</button>
<% } %>

如果您不喜欢该按钮,可以使用CSS将其设置为看起来像链接。

答案 2 :(得分:0)

使用HTTP POST,值可以作为键值对而不是URL传递,但在大多数情况下,操作是幂等的,你很可能想要使用GET,在这种情况下,没有另一种方式;参数是路径或查询字符串中URL的一部分。