В моем контроллере в приложении ASP.NET MVC 1 я хочу использовать UpdateModel для заполнения переменной данными POST в моем контроллере. Я просмотрел десятки примеров, но даже самые основные из них, кажется, терпят неудачу для меня.Основная проблема с Asp.net MVC UpdateModel (myClass)
Вот очень простой пример, который просто не работает. Что я делаю неправильно?
public class TestInfo
{
public string username;
public string email;
}
public class AdminController : Controller
{
public ActionResult TestSubmit()
{
var test = new TestInfo();
UpdateModel(test);//all the properties are still null after this executes
//TryUpdateModel(test); //this returns true but fields/properties all null
return Json(test);
}
}
//Form Code that generates the POST data
<form action="/Admin/TestSubmit" method="post">
<div>
<fieldset>
<legend>Account Information</legend>
<p>
<label for="username">Username:</label>
<input id="username" name="username" type="text" value="" />
</p>
<p>
<label for="email">Email:</label>
<input id="email" name="email" type="text" value="" />
</p>
<p>
<input type="submit" value="Login" />
</p>
</fieldset>
</div>
</form>
Спасибо за быстрые ответы ребята. Мне нравится возвращаться с обеда и видеть 4 ответа. Я тестирую их прямо сейчас. Quick side note. Я основывался на примере выше на стр. 374 Pro Asp.net MVC Framework от Стив Сандерсон и не использует заголовок [AcceptVerbs (HttpVerbs.Post)] или типизированный параметр. Неверна ли эта книга? – Glenn
Выяснил это. Книга верна. Просто не следует упоминать, что в этом случае методы отражения, используемые UpdateModel, работают только для свойств, даже если они могут работать для полей, которые в настоящее время нет. Похоже на ошибку MVC для меня. Свойства, как правило, более эффективны, но для простой модели представления легче установить значения по умолчанию для полей вверху, а не переименовывать все значения свойств и задавать значения по умолчанию в конструкторе класса. – Glenn