大家好,我想通过给它一个名字来达到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我能做些什么呢,谢谢?
您可以使用模型对象,TempData, 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'),则只能以这种方式指定名称。
如果您想POST字段值到特定的模型属性,您不需要指定元素名称,因为名称会自动与模型属性名称一起设置。
因为对于@Html.EditorFor()
,您已经通过将模型传递给此帮助器来设置名称。这个帮助器使用name="name"
生成HTML属性。
那么在你的控制器方法中你应该有:
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)