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

Gue*_*lla 7 javascript jquery razor asp.net-mvc-5

我在另一篇文章中看到,您可以在剃刀代码中调用JavaScript函数,如下所示:

@:FunctionName()
Run Code Online (Sandbox Code Playgroud)

对我来说,虽然这只输出实际的单词 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>
}
Run Code Online (Sandbox Code Playgroud)

是因为我把它嵌套在`@if'中?无论如何围绕这个?

jru*_*ell 12

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

<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>
Run Code Online (Sandbox Code Playgroud)

  • `@:`语法只是告诉Razor将后面的内容视为纯文本.在代码块的上下文中,这对于防止Razor尝试在C#/ VB上下文中运行`FunctionName()`方法而不是实际存在的JavaScript上下文是必要的. (3认同)