Guerrilla Guerrilla - 4 months ago 212
jQuery Question

Calling JavaScript function in MVC 5 Razor view

I have seen in another post that you can call a JavaScript function in your razor code like so:

@:FunctionName()


For me though this only outputs the actual words
FunctionName()


Here is my view:

@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>
}


Is it because I have nested it in an `@if'? Anyway around this?

Answer

You need to put your javascript in a <script> tag, and you need to call the functions within their scope:

<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>
Comments