つまり、コントローラーには、基本的に現在のモデルをコピーし、そのコピーに基づいて新しいビューを返すアクションがあります。これがコピーであることをユーザーに通知するために、ビューバッグを介して、コピーであることを示すメッセージを追加します。新しいビューをレンダリングするときに使用されているのは元のコピーではなく、元のビューであることに気付くまで、すべてが機能しているように見えましたが、メッセージが表示されるようにビューバッグが更新されています。
うーん、それが理解できるかどうかわからないので、私はいくつかの擬似コードでも私が何を意味するのかを示しようとします:
モデル
public class Model{
[ScaffoldColumn(false)]
[HiddenInput(DisplayValue = false)]
public Guid Id { get; set; }
public string Name { get; set; }
}
意見
<input type="submit" name="Copy" value="@_("Copy")"/>
コントローラ
public ActionResult Copy(model) {
ViewBag.Message = _("This is a copy.");
var clone = model.Clone();
return View("Index", clone);
}
私はこれに頭を包み込むのに本当に苦労しているので、どんな助け/ヒント/ポインターも本当にありがたいです。
ああ、クローンが本当にクローンであることを確認するために、コードを数回ステップスルーしました。それらを区別する唯一のものはIdプロパティであり、それはコントローラーの新しいプロパティですが、ビューがレンダリングされると、古いプロパティに戻ります。