我以前做過這個,不是用asp.net MVC,而是用純asp.net web表單。我使用了本土MVP(Model-View-Presenter)模式,並且允許在WinForms應用程序中使用Presenter(==控制器)的絕對最重要的事情是不要參考要做的任何事情與system.web
所以你需要做的第一件事是介紹接口(s)來包裝任何請求,響應,web等東西,並讓每個演示者通過依賴注入接受這些接口(或使它們可用演示者通過其他技術),然後如果演示者使用這些而不是實際的system.web內容。
例子:
想象一下,你想轉讓從網頁A到網頁B的控制(在你的WinForms應用程序你可能要關閉形成一個再打開表格B)。
接口:
public interface IRuntimeContext
{
void TransferTo(string destination);
}
Web實現:
public class AspNetRuntimeContext
{
public void TransferTo(string destination)
{
Response.Redirect(destination);
}
}
的WinForms實現:
public class WinformsRuntimeContext
{
public void TransferTo(string destination)
{
var r = GetFormByName(destination);
r.Show();
}
}
現在演示(控制器在你的情況下):
public class SomePresenter
{
private readonly runtimeContext;
public SomePresenter(IRuntimeContext runtimeContext)
{
this.runtimeContext = runtimeContext;
}
public void SomeAction()
{
// do some work
// then transfer control to another page/form
runtimeContext.TransferTo("somewhereElse");
}
}
我沒有詳細看過asp.net MVC實現,但我希望這給你一些指示,它可能會是很多工作,以啓用你以後的場景。
您可能想要考慮接受您將不得不爲不同平臺重新編寫視圖和控制器的代碼,而是專注於保持您的控制器非常精簡併將大部分代碼放入服務層被分享。
祝你好運!
我希望我可以投你兩次,這是一個很好的答案! – 2009-07-15 13:33:06