在 MVC 5 Razor 视图中调用 JavaScript 函数

Posted

技术标签:

【中文标题】在 MVC 5 Razor 视图中调用 JavaScript 函数【英文标题】:Calling JavaScript function in MVC 5 Razor view 【发布时间】:2014-12-31 09:40:39 【问题描述】:

我在另一篇文章中看到,您可以像这样在剃刀代码中调用 javascript 函数:

@:FunctionName()

对我来说,虽然这只会输出实际的单词FunctionName()

这是我的看法:

@model PriceCompare.Models.QuoteModel

@
    ViewBag.Title = "Quote";


<h2>Quote</h2>

@if (@Model.clarify == true)

    // do drop down loic
    @:ShowClarify();

else

    // fill quote
    @:ShowQuote();

<div class="clarify">

    You can see the clarify div
</div>
<div class="quote">

    You can see the quote div
</div>

@section head 

    <script type="text/javascript">

        $(document).ready(
            function ShowQuote() 
                $(".quote").show();
            ,
            function ShowClarify() 
                $(".clarify").show();
            
        );

    </script>

是因为我把它嵌套在了一个`@if'中吗?反正围绕这个?

【问题讨论】:

【参考方案1】:

您需要将您的 javascript 放在 &lt;script&gt; 标记中,并且您需要在其范围内调用函数:

<script type="text/javascript">

    $(document).ready(
        function ShowQuote() 
            $(".quote").show();
        ,
        function ShowClarify() 
            $(".clarify").show();
        

        @if (@Model.clarify == true)
        
            // do drop down loic
            ShowClarify();
        
        else
        
            // fill quote
            ShowQuote();
        
    );

</script>

【讨论】:

谢谢。 “@:”语法是一回事吗?停产了吗? @: 语法只是告诉 Razor 将后面的内容视为纯文本。在代码块的上下文中,这对于防止 Razor 尝试在 C#/VB 上下文而不是 JavaScript 上下文中运行 FunctionName() 方法(它实际存在的位置)是必要的。 @Guerrilla 我没有把它放在 Visual Studio 中,所以您可能仍然需要在 javascript 函数调用前使用 @: 我相信它需要 @: 在我刚刚尝试的前面(所以 @: ShowClarify();@: ShowQuote();【参考方案2】:

如果您将任何参数传递给 JavaScript 函数,则必须用引号 ('') 将其括起来。

foreach (var item in files)
    
        <script type="text/javascript">
            Attachment(**'@item.FileName'**, **'@item.Size'**);
        </script>  
     

【讨论】:

您应该使用代码格式选项(选择代码,Ctrl-k)以确保您的代码以您希望它在答案中的方式显示。此外,最好使用示例中问题中的内容来更清楚地说明您的意思。

以上是关于在 MVC 5 Razor 视图中调用 JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章

在 ASP.NET MVC 中:从 Razor 视图调用控制器操作方法的所有可能方式

在 ASP.NET MVC 5 中从数据库加载 Razor 视图

MVC 5 Razor 视图未将 bool 绑定到输入

ASP.NET MVC Razor

使用单一视图模型在 MVC Razor 视图上发布多个表单

为啥在 MVC4 Razor 视图中找不到扩展方法?