ASP.NET MVC передает данные в ссылке не через URL - PullRequest
0 голосов
/ 27 августа 2010

Я не знаю, противоречит ли это цели 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 ]

1 голос
/ 27 августа 2010

У вас есть пара опций, но не с ActionLink, поскольку это просто создает элемент HTML a.

Вы можете использовать SESSION для передачи данных с контроллера на контроллер. Просто убедитесь, что вы очищаете эти переменные сеанса после.

Вы также можете просто POST свои данные, используя форму.

Все зависит от того, какой у вас требуемый интерфейс и когда эти данные доступны.

0 голосов
/ 27 августа 2010

Используя HTTP POST, значения могут передаваться в виде пар ключ-значение, а не в URL, но в большинстве случаев, когда операция идемпотентна, вы, скорее всего, захотите использовать GET, в этом случае нет другой путь; параметры являются частью URL либо в пути, либо в строке запроса.

0 голосов
/ 27 августа 2010

Используйте форму со скрытыми вводами:

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

Если вам не нравится кнопка, вы можете оформить ее в CSS, чтобы она выглядела как ссылка.

...