Я использую ASP.NET MVC 4 для редактирования объектов модели через Html.BeginForm(). Проблема заключается в том, что когда я передаю объект модели, который нужно отредактировать, единственная часть представления, которая корректно отображает, - это кнопка Ok.Html.TextBoxFor() не отображается в представлении или не отображается как текст, когда в наборе полей даже несмотря на то, что я поставил перед ним «@». Вот код:Html.TextBoxFor() не отображается в поле зрения или отображается как текст, когда в поле установлено
AddEdit.cshtml
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>AddEdit</title>
</head>
<body>
<div>
@using (Html.BeginForm("Edit", "Home", FormMethod.Post))
{
<fieldset>
@Html.TextBoxFor(model => model.Hero.Name);
<input type="submit" value="OK" />
</fieldset>
}
</div>
</body>
</html>
А вот мой класс контроллера:
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public string GetData()
{
return JsonConvert.SerializeObject(new {data = new HeroStorage().GetAllViewModels()});
}
[HttpPost]
public void Edit(AddEditViewModel model)
{
new HeroStorage().Update(model.Hero);
RedirectToAction("Index");
}
//RETURNS THE VIEW
[HttpGet]
public ActionResult Edit(int ID)
{
return View("AddEdit", new AddEditViewModel(){Hero = new HeroStorage().GetByID(ID), Studios = new StudioStorage().GetAll()});
}
}
Вы перенаправление Index, но индекс не возвращает объект в представление. – artm
вы создаете новый объект типа HeroStorage(), а .GetByID (я думаю) ничего не возвращает. если вы используете базу данных в качестве модели, вам должно быть проще. В качестве альтернативы вы можете использовать опцию scaffolding, которая автоматически создает операции CRUD на данной модели. – jbutler483
причина, по которой она не отображается * ничего *, потому что ваша модель прошла пустым и, следовательно, ничего не отобразит – jbutler483