#asp.net-mvc #asp.net-mvc-4 #editorformodel
#asp.net-mvc #asp.net-mvc-4 #editorformodel
Вопрос:
всем привет, я пытаюсь связаться с EditorFor, указав ему имя. Я дал такое имя
@Html.EditorFor(model => model.name,new {name = "sizeName"})
и я пытаюсь получить его из контроллера
public ActionResult EditSize(int id,string sizeName)
{
Repository<SizeList> _rs = new Repository<SizeList>();
SizeList _sizeList = _rs.Find(a => a.id == id);
_sizeList.name = sizeName;
_rs.Save();
return RedirectToAction("Size");
}
но он не получил sizeName что я могу сделать для этой благодарности?
Ответ №1:
Вы можете использовать объект модели, временные данные, ViewBag или ViewData для сохранения значения этого объекта, а затем вы можете использовать это для задания имени вашего html-элемента.
Пример контроллера:
public ActionResult EditSize(int id,string sizeName)
{
Repository<SizeList> _rs = new Repository<SizeList>();
SizeList _sizeList = _rs.Find(a => a.id == id);
TempData["sizeName"] = sizeName;
//or ViewBag.sizeName = sizeName;
//or ViewData["sizeName"] = sizeName;
_sizeList.name = sizeName;
_rs.Save();
return RedirectToAction("Size");
}
Примеры HTML:
@Html.EditorFor(model => model.name,new {Name = TempData.Peek("sizeName") })
@Html.EditorFor(model => model.name,new {Name = ViewData["sizeName"] })
@Html.EditorFor(model => model.name,new {Name = ViewBag.sizeName })
Примечания:
Таким образом вы можете указать имя, только если первая буква заглавная (не ‘name’, а ‘Name’).
Если вы хотите ОПУБЛИКОВАТЬ значение поля для этого конкретного свойства модели, вам не нужно указывать имя элемента, потому что имя устанавливается автоматически вместе с именем свойства модели.
Ответ №2:
потому что с @Html.EditorFor()
вы уже задали name, передав model этому помощнику. Этот помощник генерирует HTML-атрибут с помощью name="name"
.
Итак, в вашем методе контроллера вы должны иметь:
public ActionResult EditSize(string name,int id)
{
Repository<SizeList> _rs = new Repository<SizeList>();
SizeList _sizeList = _rs.Find(a => a.id == id);
_sizeList.name = name;
_rs.Save();
return RedirectToAction("Size");
}
и ваш помощник должен выглядеть следующим образом:
@Html.EditorFor(model => model.name)