Что лучше использовать скрытые входные данные или переменные строки запроса в атрибуте действия формы? - PullRequest
2 голосов
/ 08 декабря 2011

Предположим, мой контроллер выглядит следующим образом

public ActionResult DoSomething(int id)
{
    Customer c = GetCustomerByID(id);
    return View(c);
}
[HttpPost]
public ActionResult DoSomething(int id, FormCollection formData)
{
    Customer c = GetCustomerByID(id);
    //Do something here
    return View(c);
}

Как лучше всего отправить идентификатор при отправке формы.Есть два варианта:

<form method="post" action="@Url.Action("DoSomething", "Customer", new { id = Model.ID })">
</form>

Или

<form method="post" action="@Url.Action("DoSomething", "Customer")">
    <input type="hidden" value="@Model.ID" />
</form>

Значение id передается двумя различными способами, но Контроллеру на самом деле все равно, так как оно будет превращено вПараметр метода не зависит.Мне было интересно, какова «лучшая практика» для этого.

Примечание: я не использовал никаких помощников в этом примере специально.Я считаю, что они более ограничивающие, чем «полезные».

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Нет лучшего пути. Оба отлично в порядке. Первый отправляет идентификатор как часть строки запроса, позволяя пользователям добавить закладку к полученной странице и вернуться позже (если вы, конечно, удалите [HttpPost]). Второй отправляет идентификатор как часть тела запроса POST, поэтому он невидим для пользователя.

0 голосов
/ 08 декабря 2011

Как говорит Дарин, вы можете сделать либо. Это зависит от вас.

Однако, поскольку вы выполняете POST, вы, вероятно, захотите использовать только параметры строки запроса для выбора записи и использовать другие элементы формы для фактических отправленных данных.

Если вы выполняете GET (что должно быть сделано только при возврате записи или каком-либо другом действии, не меняющем состояние), тогда строки запросов - ваш единственный вариант, и браузер автоматически добавит любые элементы формы в строку запросов ( так что не имеет значения, явно ли это сделать строкой запроса или нет).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...