asp.net mvc форсирует стиль получения URL в форме - PullRequest
4 голосов
/ 04 декабря 2009

У меня есть простая форма для поиска пользователя

<p>Enter a user's id number to search:</p>

<%  using (Html.BeginForm("Search", "UserAdmin", FormMethod.Get)) { %>

        <%= Html.TextBox("id") %>

        <input type="submit" value="Search" />
<% } %>

Я хочу, чтобы эта ссылка шла на useradmin / search / {id}, но ссылка отображается как useradmin / search? Id = {id}

Оба URL-адреса действительны и соответствуют моему действию, как я и ожидал, я просто думаю, что первые более аккуратны и хотят, чтобы этот стиль использовался.

Обновление:

Основываясь на ответе Майкла Гаттузо, я понял, что это рабочее решение. Не элегантно, но работает.

<p>Enter a user's id number to search:</p>

<%  using (Html.BeginForm("SearchPost", "UserAdmin")) { %>

        <%= Html.TextBox("id") %>

        <input type="submit" value="Search" />
<% } %>


    public ActionResult Search(string id)
    {
        var result = _Service.SearchForUsers(id);
        return View(result);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult SearchPost(string id)
    {
        return RedirectToAction("Search", new { id = id });
    }

1 Ответ

0 голосов
/ 04 декабря 2009

Это не проблема MVC. Запрос формы с использованием GET добавит входные данные в строку запроса в соответствии с получаемой вами визуализацией В MVC нет ничего, что могло бы это исправить, так как запрос не проходит через механизм маршрутизации. Вы можете либо отправить форму и направить ее, либо использовать javascript.

UPDATE

Для этого в MVC используйте форму POST

<p>Enter a user's id number to search:</p>

<%  using (Html.BeginForm("Search", "UserAdmin", FormMethod.Post)) { %>

        <%= Html.TextBox("id") %>

        <input type="submit" value="Search" />
<% } %>

с соответствующим действием:

[AcceptVerb("Post")]
[ActionName("Search")] //I assume your current search action has this same signature so use alias
public ActionResult SearchPost(int id){
  return new ActionResult("Search", new { Id = id });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...