mvc来自控制器的编辑器名称

时间:2014-07-03 13:15:29

标签: 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我能为此做些什么,谢谢你?

2 个答案:

答案 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)