2014-04-16 33 views
0

在我的程序中,我有一個註冊頁面,用戶輸入他的所有詳細信息以註冊到系統。在這個頁面上,我有一個按鈕,當被選擇時應該打開一個位於另一個項目上的窗體,但是當我選擇這個按鈕時沒有任何事情發生。如何使用MVC3將一個項目中的窗體鏈接到另一個項目中的按鈕

Windows窗體應用程序背後的代碼:

public GenerateToken() 
    { 
     InitializeComponent(); 
    } 

    public void Main() 
    { 
     Application.Run(GenerateToken.ActiveForm); 
    } 

上面的代碼是對自己的一個項目中。在另一個項目中,這是調用此窗口形式的控制器代碼:

public ActionResult generateToken() 
    { 
     new TokenGenerator.GenerateToken().Main(); 
     return RedirectToAction("RegisterPage"); 
    } 

在按鈕位於此按鈕的視圖中的代碼是:

<input id="GenToken" type="button" value="generateToken" onclick = "generateToken" /> 

有什麼事,我我在按鈕上做錯了還是我試圖將它們連接在一起的方式錯誤?

+0

WindowsForms和Web應用程序是這樣不同的概念。你不能用這種方法做你想做的事。你能告訴更多關於你需要發生什麼的嗎? –

+0

在我的mvc項目中,我有一個wcf應用程序,其中有註冊過程的視圖和控制器。爲了註冊,我必須放置一個按鈕,當選擇該按鈕時,應該彈出一個Windows窗體應用程序,該應用程序允許用戶輸入密碼和PIN碼,然後使用加密方法生成密鑰碼。加密過程工作,但我似乎無法讓窗體應用程序打開按鈕單擊。 – Maeglin77

+0

每個客戶都有他的機器上的這個贏得應用程序?這會作爲本地機制還是網絡?它可以做到,但似乎這種方式不適合做這種事情。 –

回答

0

我設法通過在我的Windows應用程序項目中創建一個類並將此類鏈接到我的主mvc項目來解決此問題。該類包含以下方法:

 Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     SomeForm form1 = new SomeForm(); 
     Application.Run(form1); 

通過連接這在我的主要MVC項目一個按鈕,我是能夠加載按鈕單擊Windows窗體。

0

正如你堅持這樣,你必須在這兩個應用程序之間建立一個溝通渠道。您可以使用現代技術實現此目的,例如Named Pipes.NET remoting或IIS上託管的WCF(更好)。 如果您選擇命名管道或.NET遠程處理,則必須創建Windows服務項目並將其用作服務器應用程序。如sample所示,創建一個主機對象並在Windows服務解決方案中註冊一個通道。您必須在這個託管類中定義一個方法,作爲您的Windows應用程序的運行者。請注意,您必須按照您在代碼中所做的方式來運行它。您的Web應用程序必須從服務器託管對象調用該方法,這會導致您的Windows應用程序運行。解釋如何開始處理here。讓我知道你是否明白該怎麼做。

+0

在哪裏可以輸入創建過程的代碼?我認爲它不會進入視圖本身。 我的問題是,我似乎無法得到一個按鈕/鏈接去控制器爲了訪問導致執行的Windows應用程序的方法。 一旦我設法做到這一點,按鈕會導致上面的actionresult方法,它會調用它上面的主要方法,以調出窗體?鏈接按鈕如下給出資源未找到錯誤: @Html。ActionLink(「生成令牌」,「generateToken」,「AccountController」) – Maeglin77

+0

您無法從Web應用程序運行任何類型的Windows窗體應用程序!正如我所說,你必須創建Windows服務項目,並處理Windows應用程序的運行。 –

相關問題