わかりました、それで私は私の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ステートメントを使用すると、エラーが発生します"一致する開始タグのない終了タグ"テキスト "が発生しました。開始/終了タグは適切にバランスされていますか?"。 <text>
タグを削除すると、エラー"文字数が多すぎます"が発生します。
誰かが私を正しい方向に向けることができますか?
ありがとうございました! :)
わかりました、最初に:あなたの入力をありがとう、それは私を考えさせました。最終的に私は解決策を見つけました、そして問題は閉じた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タグがどのようにエスケープされるかに注意してください...
わかりました、これは私のために働く何かです。たった今テストされました。
function getSomeHtml() {
var myHtml = '';
@{
if (Model.UseSomeNiceHtml)
{
<text>
myHtml += '<div> <p class="label">Whatever</p></div>';
</text>
}
}
return myHtml;
}
{}
の追加セットを追加しました。
<text>
タグを削除するか、myHtml += '';
ステートメント内に配置してください
これも機能します。
function getSomeHtml() {
var myHtml = '';
if('@Model.UseSomeNiceHtml' === '@true')
{
myHtml += '<div> <p class="label">Whatever</p></div>';
}
return myHtml;
}
これを試して:
function getSomeHtml() {
@{
var myHtml = "";
if(Model.UseSomeNiceHtml)
{
myHtml += "<div> <p class='label'>Whatever</p></div>";
}
}
return "@myHtml";
}