C#if Javascript,Razor/MVC3中的语句

Eri*_*ing 18 javascript c# razor asp.net-mvc-3

好的,所以我试图在我的javascript中使用"if"语句.根据我模型中的布尔值,函数应该返回一些html或一个空字符串.这基本上就是我想做的事情:

function getSomeHtml() {
var myHtml = '';
@if(Model.UseSomeNiceHtml)
{
<text> 
myHtml += '<div> <p class="label">Whatever</p></div>'; 
</text>
}
return myHtml;
}
Run Code Online (Sandbox Code Playgroud)

当使用foreach循环时,类似的代码工作得很好(基本上在上面的例子中用foreach替换).使用if语句,我得到错误"遇到结束标记"文本"没有匹配的开始标记.你的开始/结束标记是否正确平衡?" .当我删除<text>标签时,我收到错误"字符文字中的字符过多".

有人能指出我正确的方向吗?

谢谢!:)

And*_*iel 33

好的,这里有适合我的东西.刚刚测试过.

function getSomeHtml() {
    var myHtml = '';
    @{
        if (Model.UseSomeNiceHtml)
        {
            <text> 
            myHtml += '<div> <p class="label">Whatever</p></div>'; 
            </text>
        }
    }
    return myHtml;
}
Run Code Online (Sandbox Code Playgroud)

我添加了一组额外的{}.


Eri*_*ing 10

好的,首先:感谢您的投入,让我思考.最终我找到了解决方案,问题是在关闭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;
}
Run Code Online (Sandbox Code Playgroud)

注意关闭html标签是如何转义的......

  • 注意,你可以使用`@:`标签来表示非MVC代码(而不是`<text> ... </ text>`).见http://weblogs.asp.net/scottgu/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax (8认同)