Asp.net Razor,语法错误-onclick事件参数
该代码有4个错误,2个语法错误和2个未终止的字符串常量 我应该如何修复这些错误Asp.net Razor,语法错误-onclick事件参数,razor,Razor,该代码有4个错误,2个语法错误和2个未终止的字符串常量 我应该如何修复这些错误 您可以在一个Html.Raw调用中进行分解: <input type="button" value="Delete" onclick="deleteMember(@Model.ID, '@ViewBag.returnUrl')"/> 第三种选择是分离关注点;将标记和脚本分开。比我快,但有点像: @{ String onclick = String.Format("deleteMember({0},
您可以在一个
Html.Raw
调用中进行分解:
<input type="button" value="Delete" onclick="deleteMember(@Model.ID, '@ViewBag.returnUrl')"/>
第三种选择是分离关注点;将标记和脚本分开。比我快,但有点像:
@{
String onclick = String.Format("deleteMember({0}, '{1}')",
Model.ID, Html.Encode(ViewBag.returnUrl));
}
<input type="button" value="delete" onclick="@onclick" />
var buttons=document.getElementsByTagName('INPUT');
对于(var b=0;b
尽管很奇怪,第一个括号与razor混淆了(即使它是在属性中声明的)。我自己也不希望出现这种行为。这是VS中的一个bug,而不是其他任何东西 它认为它仍然会呈现出你所期望的效果 我喜欢布拉德的解决方案
另一个建议的选项是将值弹出到属性中,并使用类似jQuery的方法将数据破折号值传递给函数。另一种方法是将值分配给javascript变量,并在方法调用中使用它们
<input type="button" value="delete"
data-task="delete" data-id="@Model.ID" data-returnurl="@ViewBag.returnUrl" />
<!-- .... -->
<script>
var buttons = document.getElementsByTagName('INPUT');
for (var b = 0; b < buttons.length; b++){
if (buttons[b].type != 'button') continue;
switch (buttons[b].getAttribute('data-task') || ''){
case 'delete':
// read data-id & data-returnurl. Do something with them, and
// move on.
break;
// other actions
case 'add':
case 'update':
default:
break;
}
}
</script>
var memberId='@Model.ID';
var returnUrl='@ViewBag.returnUrl';
您也可以使用这种方式在函数中传递参数
<script>
var memberId = '@Model.ID';
var returnUrl = '@ViewBag.returnUrl';
</script>
<input type="button" value="Delete" onclick="deleteMember(memberId, returnUrl)"/>
通过onclick事件传递参数的好方法
<script>
var memberId = '@Model.ID';
var returnUrl = '@ViewBag.returnUrl';
</script>
<input type="button" value="Delete" onclick="deleteMember(memberId, returnUrl)"/>
@Html.DropDownListFor(M => M.SubscriptionType,
new SelectList(Model.DefaultPlanName, "value", "displayText"),
new { @onclick = "Testnew('"+Model.CreationTime+"' )",
@class = "form-control selectpicker" })