2010-03-12 129 views
0

我想執行加載部分視圖的功能。 我有我的部分觀點如下。我正在嘗試從腳本調用該函數。但我認爲我不能在我的腳本中使用ViewData。我不知道在腳本中使用viewdata的正確方法。有什麼方法可以訪問腳本內部的viewdata。如何在MVC腳本中獲取ViewData?

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<clsAdministration>" %> 
    <script language="javascript" type="text/javascript" for="window" event="onload">    
     InitializeView(ViewData["RoleErrMessage"]); 
    </script> 

    <script type="text/javascript" language="Javascript"> 
     function InitializeView(msg) { 
     if (msg.toString().length > 0) { 
      alert(msg); 
     } 
     } 
    </script> 

感謝, 卡皮爾

回答

3

如果改變這一行:

InitializeView(ViewData["RoleErrMessage"]); 

爲了這樣的事情:

InitializeView('<%=ViewData["RoleErrMessage"]%>'); 

它將工作。這樣做的原因是,將要運行腳本是這樣的:

InitializeView('Message'); 

服務器端代碼(<%=ViewData["RoleErrMessage"]%>)將在服務器端執行,那麼結果將被髮送到客戶端,您的JavaScript運行。

+0

即使這不起作用。 – 2010-03-12 10:27:17

+0

然後你沒有按照我的建議去做,或者你正在等待其他事情。問題是什麼? – 2010-03-12 10:30:17

+0

NOw我已經做了這樣的事情。但仍然無法正常工作。 2010-03-12 11:18:41

0

Kapil,也許腳本在文檔完全加載之前運行。

您可以嘗試在文檔加載時運行它。不確定如何在JavaScript中做到這一點,但在你寫的jQuery中;

$('document').ready(function(){InitializeView('<%=ViewData["RoleErrMessage"]%>'); }); 

我認爲你仍然需要做@Mattias建議的代碼,但我可能是錯的。

以上是完全未經測試的,因此您可能需要稍微調整一下。

0

它可以用下面的代碼完成,我剛纔測試過。

​​