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

ノート:

この方法で名前を指定できるのは、最初の文字が大文字の場合のみです('name' ではなく 'Name')。

フィールド値をその特定のモデル プロパティに POST する場合、要素名を指定する必要はありません。これは、名前がモデル プロパティ名で自動的に設定されるためです。

于 2014-07-03T13:27:27.423 に答える
0

@Html.EditorFor()モデルをこのヘルパーに渡すことですでに名前を設定しているためです。このヘルパーは、HTML 属性を で生成します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 に答える