是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?

Posted

技术标签:

【中文标题】是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?【英文标题】:Is it possible to reference ViewData within a script block in ASP.NET MVC? 【发布时间】:2010-09-25 13:13:39 【问题描述】:

我想使用 jQuery 为按钮添加单击处理程序,但处理程序需要引用控制器提供的数据。有没有办法在 ASP.NET MVC 的脚本块中访问 ViewData?还是需要在控制器中构建脚本?

【问题讨论】:

【参考方案1】:

如果脚本块在 ASP.NET 页面中,那么您可以引用它...

例如:

<script type="text/javascript">
    jQuery(document).ready(function() 
        jQuery('#group-edit-form').validate(
            rules: 
                title: 
                    required: true,
                    remote: '<%=Url.Action("ValidateGroupName", new  id = ViewData["GroupId"] ) %>?parentId=' + getParentId()
                
            ,
            messages: 
                title: 
                    required: getMessage (7002),
                    remote: '<%= ((MessagingModel)ViewData["Messages"]).GetMessage (9001) %>'
                
            
        )

    );
</script>

当运行时引擎处理页面时,会评估 块中的所有内容,无论其在页面中的位置如何。

【讨论】:

执行此操作时是否获得 Intellisense? 很遗憾没有,VS 将其作为字符串的一部分读取,至少在上面的示例中): VS 2008 在您的 aspx 页面上为您提供智能感知。 我在脚本块或 html 标记内都没有得到智能感知。 当 Intellisense 在脚本块中时,我没有得到它。对于像上面这样的场景,我会在脚本块之外为智能感知创建标签,然后将其复制'n'粘贴到脚本标签区域中。有点笨重。

以上是关于是否可以在 ASP.NET MVC 的脚本块中引用 ViewData?的主要内容,如果未能解决你的问题,请参考以下文章

关于ASP.NET MVC部分视图渲染问题。

ASP.NET MVC 4 ScriptBundle 返回空

ASP.NET MVC中Unobtrusive Ajax的妙用

在 ASP.NET MVC 4 中添加服务引用

Asp.Net MVC 中的 JQuery UI 日期选择器

ASP.net MVC 和 jQueryUI 的困境