Как получить значение строки запроса в форме сообщения - PullRequest
2 голосов
/ 14 апреля 2009

У меня есть URL:

/Account.aspx/Confirm/34a1418b-4ff3-4237-9c0b-9d0235909d76

и форма:

<% using (Html.BeginForm())
   { %>
    <fieldset>
        <p>
            <label for="password" class="instructions">
                Contraseña:</label>
            <%= Html.Password("password") %>
            <%= Html.ValidationMessage("password", "*") %>
        </p>
        <p>
            <input type="submit" value="Validar" />
        </p>
    </fieldset>
<% } %>

В действии контроллера:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Confirm(string id, string password)
{
    //code
}

Я хочу получить значение GUID в URL (часть после подтверждения) и значение входного пароля.

Как я могу это сделать?

EDIT:

Я зарегистрировал эти маршруты:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("Error.aspx/{*pathInfo}");
    routes.IgnoreRoute("Admin/{*pathInfo}");
    routes.MapRoute(
        "Default",
        "{controller}.aspx/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" } 
    );
    routes.MapRoute("Root", "", 
            new { controller = "Home", action = "Index", id = "" });
}

Я думаю, что все странно, но в параметре id действия Confirm я получаю пустую строку.

Ответы [ 3 ]

1 голос
/ 19 апреля 2009

Разве это не потому, что вы РАЗМЕЩАЕТЕ свою форму, у которой нет идентификатора внутри формы?

Что вы можете сделать, так это на странице формы установить Модель в качестве переданного идентификатора, а затем назначить скрытое входное значение этому идентификатору ...

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage<string>" %>
public ActionResult Confirm(string id)
{
   return View(id);
}

Теперь ViewData.Model будет содержать ваш идентификатор. Поместите это в вашу форму.

<input type="hidden" id="id" name="id" value="<%= ViewData.Model %>" />

Затем, когда ваша форма будет отправлена, она будет проходить через нее.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Confirm(string id, string password)
{
   //...now you have access to ID and password
}
0 голосов
/ 14 апреля 2009

Вы на самом деле не указали, на какой URL-адрес отправляется сообщение, только на тот, который предназначен для формы, но попробуйте это:

var pathInfo = HttpContext.Request.PathInfo

Это должно вернуть /Confirm/34a1418b-4ff3-4237-9c0b-9d0235909d76, вы, вероятно, можете сделать это проще, если у вас есть маршрут, связанный с этой страницей, просто присвоив GUID имя RouteValue. Если у вас есть маршрут, отправьте его, и я буду рад помочь.

0 голосов
/ 14 апреля 2009

В вашем Global.asax.cs определите маршрут для подтверждения, который указывает, что последняя часть URL является параметром.

Например:

"Account/Confirm/{id}"

Платформа MVC автоматически проанализирует URL-адрес и вернет GUID в параметре id

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