调用JavaScript函数在MVC 5 Razor视图
问题描述:
我在另一篇文章中看到,你可以调用JavaScript函数在你的剃须刀的代码如下所示:调用JavaScript函数在MVC 5 Razor视图
@: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嵌套它?无论如何围绕这个?
答
你需要把你的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>
答
如果您传递任何参数给JavaScript函数,它必须用引号引起来( '')。
foreach (var item in files)
{
<script type="text/javascript">
Attachment(**'@item.FileName'**, **'@item.Size'**);
</script>
}
+1
您应该使用代码格式化选项(选择代码Ctrl-k)以确保您的代码以您希望它在您的答案中的方式显示。另外,最好在你的示例中使用问题中的某些内容来更清楚地表达你的意思。 – Tibrogargan 2016-07-14 20:40:30
谢谢。 “@:”语法是什么东西?它是否停产? – Guerrilla 2014-11-04 13:27:36
'@:'语法只是告诉Razor将后面的内容视为纯文本。在代码块的上下文中,这对于防止Razor尝试在C#/ VB上下文中运行'FunctionName()'方法而非实际存在的JavaScript上下文是必要的。 – 2014-11-04 14:04:25
@Guerrilla我没有把它放在Visual Studio中,所以可能你仍然需要javascript函数调用前的'@:'。 – jrummell 2014-11-04 14:14:40