我想在我的.NET MVC 3應用程序上實現這個Command Pattern,專門用於保存對Thing的編輯。我不確定如何繼續。之前,我實際的問題,這裏是簡化代碼:.NET MVC 3中的命令模式(從控制器中刪除垃圾)
public class ThingController
{
private readonly ICommandHandler<EditThingCommand> handler;
public ThingController(ICommandHandler<EditThingCommand> handler)
{
this.handler = handler;
}
public ActionMethod EditThing(int id)
{
...build EditThingViewModel and return with View...
}
[HttpPost]
public ActionMethod EditThing(int id, EditThingViewModel vm)
{
var command = new EditThingCommand
{
...not sure yet...
};
this.handler.Handle(command);
...redirect somewhere...
}
}
我EditThingViewModel是從我的域名,其中包括POCO類的完全斷開。這似乎是我的EditThingCommand應該是這樣的:
public class EditThingCommand
{
Thing ModifiedThing;
}
然而,建立ModifiedThing隨後將仍然可以在我的控制器發生。這是這種情況下的主要工作。在修改ModifiedThing的時間(以及應用於它的「舊」時間戳以進行樂觀併發檢查)時,剩下的就是命令在我的數據上下文中調用Update。
很明顯,能夠用其他命令輕鬆裝飾它是有價值的,但是我也希望能夠將我的控制器之外的ModifiedThing的構造移動到外面。 (也許這個問題其實就是這個問題。)EditThingCommand在我的域中,沒有對EditThingViewModel的引用,所以它不能去那裏。 在我的表示層中有另一個命令將我的viewmodel映射到我的poco實體是否有意義?
我會建議看看Paul Stovell的文章清理ASP.NET MVC控制器在http://www.paulstovell.com/clean-aspnet-mvc-controllers發現 –
感謝您的建議! –