簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM