2010-08-26 77 views
0

我不知道这是否违背了MVC的目的,但我想有一个控制器接受2个变量,但我不会将它们传递给网址。有没有简单的方法来做到这一点?ASP.NET MVC在链接中传递数据不是通过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

回答

1

你有一个传递数据情侣选项,但与ActionLink不同,因为这只是构建HTML a元素。

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

您也可以只使用表格POST您的数据。

这一切都取决于你想要的接口是什么,以及什么时候有数据可用。

0

使用形式隐藏输入:

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

如果你不喜欢的按钮,你可以用CSS样式它看起来像一个链接。

0

使用HTTP POST,这些值可以作为键值对而不是在URL中传递,但在大多数情况下,如果操作是幂等的,那么最有可能使用GET,在这种情况下,别无退路;参数是路径或查询字符串中URL的一部分。