[英]C# if statement within Javascript, Razor/MVC3
好的,所以我正在尝试在我的 javascript 中使用“if”语句。 根据我模型中的布尔值,函数应该返回一些 html 或空字符串。 这基本上就是我想要做的:
function getSomeHtml() {
var myHtml = '';
@if(Model.UseSomeNiceHtml)
{
<text>
myHtml += '<div> <p class="label">Whatever</p></div>';
</text>
}
return myHtml;
}
类似的代码在使用 foreach 循环时非常有效(在上面的示例中基本上用 foreach 替换 if )。 使用 if 语句,我收到错误“遇到没有匹配的开始标签的结束标签“文本”。您的开始/结束标签是否正确平衡? . 当我删除<text>
标签时,我收到错误"Too many characters in character literal" 。
有人能指出我正确的方向吗?
谢谢! :)
好的,这里有适合我的东西。 刚刚测试过。
function getSomeHtml() {
var myHtml = '';
@{
if (Model.UseSomeNiceHtml)
{
<text>
myHtml += '<div> <p class="label">Whatever</p></div>';
</text>
}
}
return myHtml;
}
我添加了一组额外的{}
。
好的,首先:感谢您的投入,让我思考。 最终我找到了解决方案,问题是在关闭html标签中未转义为“/”。 这些标签没有转义,我的标签吓坏了。 无论如何,我想我会与你分享我的完成代码的样子。 我想它可以作为如何在javascript函数中使用C#循环和if语句的示例。
function getSubActivitiesHtml(participantId) {
var html = "";
@{
if(Model.UseSubActivities)
{
<text>
html += "<div class=\"textinput req\"><div class=\"checkbox req\">";
</text>
foreach (var subActivity in Model.SubActivities)
{
<text>
html += "<p><input id=\"activity_" + participantId + "_@(subActivity.Id)\" name=\"Participants[" + participantId + "].SelectedSubActivities\" value=\"@(subActivity.Id)\" type=\"checkbox\" />";
html += "<label for=\"activity_" + participantId + "_@(subActivity.Id)\">@(subActivity.Name)</label></p>";
</text>
}
<text>
html += "<\/div><p class=\"label\">Delaktiviteter</p><\/div>";
</text>
}
}
return html;
}
注意关闭html标签是如何转义的......
尝试删除<text>
标签或将它们放在myHtml += '';
声明
这也有效。
function getSomeHtml() {
var myHtml = '';
if('@Model.UseSomeNiceHtml' === '@true')
{
myHtml += '<div> <p class="label">Whatever</p></div>';
}
return myHtml;
}
function @(treeviewConfig.AddNewTreeviewNode)(treeNode) {
@if (!string.IsNullOrEmpty(NodeIDKey) && !string.IsNullOrEmpty(treeviewConfig.ParentIdExpr)) {
<text>
treeNode['@(treeviewConfig.ParentIdExpr)'] = treeNode['@(NodeIDKey)'];
treeNode['@(NodeIDKey)'] = 0;
</text>
}
@if ( !string.IsNullOrEmpty(treeviewConfig.DisplayExpr)) {
<text>
treeNode['@(treeviewConfig.DisplayExpr)'] = 'nue';
</text>
}
@if ( !string.IsNullOrEmpty(treeviewConfig.EditTreeviewNode)) {
<text>
treeNode['@(treeviewConfig.EditTreeviewNode)'] = 'nue';
</text>
}
PopulateTreeViewNodeInputs(treeNode);
@(treeviewConfig.ShowTreeEditPopup)();
}
这对我很有效
试试这个:
function getSomeHtml() {
@{
var myHtml = "";
if(Model.UseSomeNiceHtml)
{
myHtml += "<div> <p class='label'>Whatever</p></div>";
}
}
return "@myHtml";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.