1

大家好,我正在尝试通过为其命名来联系 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 我能为此做些什么谢谢?

4

2 回答 2

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 })

笔记:

如果第一个字母是大写的(不是“名称”而是“名称”),您只能以这种方式指定名称。

如果要将字段值 POST 到该特定模型属性,则无需指定元素名称,因为该名称是使用模型属性名称自动设置的。

于 2014-07-03T13:27:27.423 回答
0

因为@Html.EditorFor()您已经通过将模型传递给此助手来设置名称。此帮助程序生成带有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)
于 2014-07-03T13:23:29.007 回答