2

モデルがあるとしましょう:

public MyClass
{
    public int Id {get;set;}
    public string Name {get;set;}
    public int ContentId {get;set;}
}

コントローラのアクションにアクセスするとします。

[HttpGet]
public ActionResult Create(int id)
{
    MyClass mc = new MyClass();
    mc.Id = 49;
    mc.ContentId = id;
    mc.Name = "Sample";
    return View("Create", mc);
}

「作成」ビューはMyClassで強く型付けされており、ヘルパー@ Html.TextBoxFor(x => x.Id)があります。

MyController / Create?id = 15を呼び出してアクションを呼び出すと、テキストボックスに49ではなく15の値が表示されます。MVCはアクションで設定されたIDプロパティを無視し、クエリのIDプロパティを使用します。

この振る舞いがどこにも文書化されていないことを考えると、これはかなり奇妙だと思います。

これについて何か良いコメントはありますか?

4

3 に答える 3

8

ModelState.Clear()アクションの開始時に使用

于 2012-10-03T20:53:08.273 に答える
1

それ以外の

@Html.TextBoxFor(x => x.Id)

使用する:

@Html.TextBoxFor(x => Model.Id)

そして、それがあなたが探している機能をあなたに与えるかどうか見てください。

于 2012-10-03T20:31:34.533 に答える
1

これは一般的な問題であり、さまざまな場所で文書化されています。良い例はここにあります:

http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

于 2012-10-03T21:01:11.660 に答える