大家好我想通过给它命名来达到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我能为此做些什么,谢谢你?
答案 0 :(得分:1)
您可以使用模型对象,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到该特定模型属性,则无需指定元素名称,因为名称是使用模型属性名称自动设置的。
答案 1 :(得分:0)
因为使用@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)