我有一個動作,基本上做到這一點:ID獲取寫入眼簾
public ViewResult Save(Foo postedFoo)
{
Foo foo;
if (postedFoo.Id == 0) //New foo; need to save for first time
{
foo = new Foo();
}
else //Already exists, need to load and update
{
foo = FooRepository.LoadFoo(postedFoo.Id);
}
UpdateModel(foo);
FooRepository.Save(foo);
return View(foo);
}
正如你所看到的,動作可以同時處理創造新Foo
實例和更新現有的。
的Foo的ID屬性寫入隱藏字段中的觀點是這樣的:
@Html.HiddenFor(m => m.Id)
的問題是,在用戶保存一個新Foo
的Foo
的Id
財產的情況下(這正被設置在行FooRepository.Save(foo)
)在頁面重新顯示給用戶之前不被寫入隱藏字段。
這意味着,如果用戶保存一個新Foo
,然後立即改變的東西,節省再次,控制器認爲這是另一個新的Foo
並在數據庫中創建一個新的Foo
而不僅僅是更新它。
任何人都可以提出爲什麼隱藏字段沒有被填充?
您應該使用POST/REDIRECT/GET。是的,還有其他方法可以解決這個問題,但是P/R/G是*正確*方式。 –
怎麼這樣?.......... – David
你的兩個單詞問題給我提供了不足的上下文來給出任何有用的答案。 –