2011-07-08 63 views
0

我有一個非常類似於這個問題how to call javascript function from Controllers file in MVC?但提供的答案不是我所需要的。從ASP.NET MVC控制器觸發/調用JavaScript/jQuery事件

我想要做的是這個,我想返回一個視圖,但是我想要觸發/調用一個javascript/jquery事件。比如在我的控制器:

public ActionResult List() 
    { 
     // do some processing 
     // Call the javascript/jquery event    

     return this.View(); 
    } 

現在,我想這個問題的方法是使用的觀點一樣,包包:

public ActionResult List() 
    { 

     ViewBag.MovePanel = "yes"; 
     return this.View(); 
    } 

然後在我看來,我有soemething像:

<input type="hidden" name="move" id="move" value="<%: (string)ViewBag.MovePanel %>" /> 
<script type="text/javascript"> 
$('#move').change(function() { 
    console.log('changed'); 
}); 

該值被設置爲「yes」,但「change」事件永遠不會被觸發。

我該如何實現我想要做的?

編輯: 按照達林的評論,這是我正在努力實現的。 我們正在嘗試創建一個類似於圖像輪播的形式輪播。所以,我想要做的是控制是否顯示下一個表單。

例如,一個典型的工作流程是這樣的:

  1. 說我是第一種形式是項目的名單上。我選擇和項目,然後點擊編輯。
  2. 然後發生的事情是列表窗體從視圖中隱藏(但未關閉),編輯窗體向用戶顯示。
  3. 用戶然後對窗體進行一些更改並嘗試保存。
  4. 如果沒有驗證錯誤,則編輯表單將關閉,並且之前的列表表單將顯示在視圖中。

因此,我遇到了最後一步的問題,即讓列表窗體進入視圖。

在更廣闊的背景下說,當我提交表單並且出現錯誤時,我應該能夠保持「編輯」表單在視圖中,而不是關閉它並且不顯示先前打開的「列表」表單。

我希望這是一個更清晰的解釋。

+0

如果你需要這樣的東西,你的設計有一些根本性的錯誤。所以爲了幫助你解釋你的場景是什麼以及你想要達到什麼目的(並且不要說我試圖從控制器動作中調用一個javascript事件,因爲這沒有任何意義)。描述你的最終目標。 –

+0

@Darin:公平點 – DavidS

回答

0

好吧,

達林是對的,設計是關閉的。所以我最終需要做的就是「調整」我的所有表單,而不是依靠HTML表單提交。我不願意這樣做,僅僅是因爲它意味着更多的工作,但是做完之後,並沒有像我想象的那麼長。

但是,以下真的幫了我很多How to read modelstate errors when returned by Json?

0

你應該注意的一件事是, 你不能從你的服務器端調用javascript(客戶端代碼)方法。 (除了推動)。

並且在您的代碼上,$(「#move」)的值永遠不會更改。這是值得的,因爲「是」。 如果您更改$(「#move」)的值而不是「yes」,它會觸發。

相關問題