@if (Model.PaymentMethodTypeId == (int) PaymentMethodType.PayPal)
{
var url = @MyLibraryHtml.JavascriptEncodeUrl(Url.RewriteAction("SaveNewPaymentMethod", "PaymentMethods"));
var args = form.serialize();
@Html.Raw(" var url = ")
}
在 if block 中,代码是 Javascript,但正如我所料,Razor 将 var url 和 var arg 视为 .NET 变量。
我知道我可以使用 Html.Raw 但是对于这个问题有没有其他更好的解决方案,因为我相信 Html.Raw 会破坏可读性
最佳答案
您可以使用 <text></text>
元素告诉 Razor if
中的代码应该被视为“文本”而不是 C# 代码:
@if (Model.PaymentMethodTypeId == (int) PaymentMethodType.PayPal)
{
<text>
var url = @MyLibraryHtml.JavascriptEncodeUrl(Url.RewriteAction("SaveNewPaymentMethod", "PaymentMethods"));
var args = form.serialize();
</text>
}
或者,如果您只有几行,您可以使用 @:
“转义”单行:
@if (Model.PaymentMethodTypeId == (int) PaymentMethodType.PayPal)
{
@:var url = @MyLibraryHtml.JavascriptEncodeUrl(Url.RewriteAction("SaveNewPaymentMethod", "PaymentMethods"));
@:var args = form.serialize();
}
关于javascript - 带有 Javascript 的 Razor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25960927/