MVC通过名称从控制器到达编辑器



大家好,我想通过给它一个名字来达到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)

相关内容

  • 没有找到相关文章

最新更新