<input type="button" value="Delete" onclick="deleteMember(@Model.ID, '@ViewBag.returnUrl')"/>
该代码有4个错误,2个语法错误和2个Unterminated字符串常量。
我该怎么做才能解决这些错误?
答案 0 :(得分:25)
您可以在Html.Raw
电话中将其分解:
<input type="button"
value="Delete"
onclick="@(Html.Raw(String.Format("deleteMember({0}, '{1}')",
Model.ID,
Html.Encode(ViewBag.returnUrl)
)))"
/>
首先将其分配给string
,然后在属性中引用该变量。
@{
String onclick = String.Format("deleteMember({0}, '{1}')",
Model.ID, Html.Encode(ViewBag.returnUrl));
}
<input type="button" value="delete" onclick="@onclick" />
第三种选择是分开关注;保持标记和脚本分开。 Neil打败了我,但有点像:
<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>
虽然奇怪的是第一个括号与剃刀混淆(即使它在属性中声明)。我自己也不会期待这种行为。
答案 1 :(得分:1)
这是VS中的一个错误,而不是其他任何错误。
它认为它仍会像你期望的那样呈现。
我喜欢Brad的解决方案。
另一个推荐的选项是将您的值弹出到data-dash属性中,并使用类似jQuery的东西将数据破折号值传递给您的函数。
答案 2 :(得分:0)
你可以做的另一种方法是将值分配给javascript变量并在方法调用中使用它们。
<script>
var memberId = '@Model.ID';
var returnUrl = '@ViewBag.returnUrl';
</script>
<input type="button" value="Delete" onclick="deleteMember(memberId, returnUrl)"/>
答案 3 :(得分:0)
您也可以使用这种方式传递函数
中的参数@Html.DropDownListFor(M => M.SubscriptionType,
new SelectList(Model.DefaultPlanName, "value", "displayText"),
new { @onclick = "Testnew('"+Model.CreationTime+"' )",
@class = "form-control selectpicker" })