Простой способ получить параметр из URL и поместить его в элемент управления вводом? - PullRequest
0 голосов
/ 15 ноября 2011

Я создаю систему приглашений, в которой пользователь при регистрации на сайте может указать пользователя, который их рецензировал.

Существует также способ для существующих пользователей отправлять приглашения. Друг получит ссылку:

http://www.foo.com/account/register?referal=sandyUser216

Как я могу получить это значение sandyUser216 и поместить его в качестве значения внутри поля ввода текста?

Я использую C # и MVC3.

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

Как всегда в приложении ASP.NET MVC вы начинаете с написания модели представления, которая будет представлять информацию, содержащуюся в вашем представлении:

public class RegisterViewModel
{
    [Required]
    public string Referal { get; set; }
}

затем вы пишете действия контроллера для соответственно отображения формы регистрации и ее обработки:

public ActionResult Register(RegisterViewModel model)
{
    return View(model);
}

[HttpPost]
[ActionName("Register")]
public ActionResult ProcessRegistration(RegisterViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }
    // TODO: perform the registration
    return RedirectToAction("success");
}

и, наконец, вы пишете соответствующий строго типизированный вид:

@model RegisterViewModel
@using (Html.BeginForm())
{
    @Html.LabelFor(x => x.Referal)
    @Html.EditorFor(x => x.Referal)
    @Html.ValidationMessageFor(x => x.Referal)
    <button type="submit">Register</button>
}

Теперь осталось только перейти к /account/register?referal=sandyUser216.

И вы выполнили всю схему MVC. Если вы пропустите одну из этих трех букв, это означает, что вы выполняете ASP.NET MVC неправильно.

1 голос
/ 15 ноября 2011

Отметьте Request.QueryString.

<input type="text" value="@Request.QueryString["referal"]" />

Или укажите его в свойстве Model, а не в виде.

...