如何在MVC中的脚本中获取ViewData?

时间:2010-03-12 09:59:37

标签: javascript asp.net-mvc

我想在加载局部视图时执行一个函数。 我的部分观点如下。我试图从脚本调用该函数。但我想我不能在我的脚本中使用ViewData。我不知道在脚本中使用viewdata的正确方法。有没有办法访问脚本中的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 个答案:

答案 0 :(得分:3)

如果您更改此行:

InitializeView(ViewData["RoleErrMessage"]);

对于这样的事情:

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

它会起作用。原因是将运行的脚本是:

InitializeView('Message');

服务器端代码(<%=ViewData["RoleErrMessage"]%>)将在服务器端执行,然后结果将发送到客户端,您的javascript将运行。

答案 1 :(得分:0)

Kapil,也许脚本在文档完全加载之前就已经运行了。

您可以在加载文档时尝试运行它。不知道如何在javascript中执行此操作,但在jQuery中你会写;

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

我认为你仍然需要做@Mattias建议的代码,但我可能错了。

以上内容完全未经测试,因此您可能需要稍微调整一下。

答案 2 :(得分:0)

可以使用以下代码完成,我刚刚测试过。

var variable_X=('@ViewData["pubId"]');