Javascript中的C#if语句,Razor/MVC3
本文关键字:Razor MVC3 语句 中的 C#if Javascript | 更新日期: 2023-09-27 18:27:31
好的,所以我尝试在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"。您的开始/结束标记是否正确平衡?"。当我删除<text>
标记时,我会得到错误"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";
}
多年后刚刚在这里进行了修订。一些更现代的Razor版本现在支持这一点:
@if (Model.isValid)
{
@: console.log("This statement will be printed.");
}
这只打印一条语句,所以如果你必须打印多条语句,你就必须添加更多的@:行
但是您可以使用它来调用在其他地方定义的函数