Привязка модели MVC3 и запрос GET - PullRequest
0 голосов
/ 16 марта 2012

У меня есть простая HTML-форма и модель, соответствующая форме, основанной на связывателе по умолчанию. HTTPPOST работает нормально и возвращает все значения формы в модель при отправке формы. Однако я ожидал, что HTTP GET отобразит форму с именем пользователя по умолчанию Hello. Но представление отображает пустую форму. Может кто-нибудь любезно объяснить мне, почему механизм связывания модели по умолчанию не может выдвинуть значения в форму по запросу GET, но может получить значения из моей формы в модель по запросу POST. Спасибо.

----- КОНТРОЛЛЕР -----

[HttpPost]
    public ActionResult Index(SimpleFormModel application)
    {
        return View(application);
    }
[HttpGet]
    public ActionResult Index ()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";
        SimpleFormModel simplefm = new SimpleFormModel();
        simplefm.UserName = "Hello";
        return View(simplefm);
    }

--- МОДЕЛЬ ---

public class SimpleFormModel
{
    public string UserName { get; set; }
    public string Dob { get; set; }
    public string Email { get; set; }

}

-------- VIEW --------------------------

@model MVC3MobileApplication.Models.SimpleFormModel
@{
ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
<p>
    To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>


<form action="">
<fieldset>
<legend>Personal information:</legend>
Name: <input type="text" size="30" name="SimpleFormModel.UserName" /><br />
E-mail: <input type="text" size="30" name ="SimpleFormModel.Email"/><br />
Date of birth: <input type="text" size="10" name ="SimpleFormModel.Dob"/>
</fieldset>
</form> 

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Замените текстовое поле HTML следующим:

@Html.TextBoxFor(m=>m.UserName)

В противном случае .net не сможет заполнить значение поля ...

1 голос
/ 16 марта 2012

Вам нужно использовать HTML-помощники для генерации ваших полей ввода вместо их жесткого кодирования, как вы это делали:

@model MVC3MobileApplication.Models.SimpleFormModel

@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>

@using (Html.BeginForm())
{
    <fieldset>
        <legend>Personal information:</legend>
        Name: @Html.TextBoxFor(x => x.UserName, new { size = "30" })
        <br />
        E-mail: @Html.TextBoxFor(x => x.Email, new { size = "30" })
        <br />
        Date of birth: @Html.TextBoxFor(x => x.Dob, new { size = "10" })
    </fieldset>

    <button type="submit">OK</button>
}

Помощники HTML будут использовать значения модели для генерации соответствующих полей ввода и их заполнения.

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