Razor中的三元函数使用复合C1将引号作为实体重写

Razor中的三元函数使用复合C1将引号作为实体重写,razor,content-management-system,c1-cms,Razor,Content Management System,C1 Cms,我试图在复合C1函数中做一些非常直接的事情,但我相信复合函数将函数的HTML输出视为XML这一事实会引起问题。不幸的是,我找不到解决这个问题的办法。下面是令人不快的一行代码: <input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? @"checked=""checked""" : "") /> 这

我试图在复合C1函数中做一些非常直接的事情,但我相信复合函数将函数的HTML输出视为XML这一事实会引起问题。不幸的是,我找不到解决这个问题的办法。下面是令人不快的一行代码:

<input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? @"checked=""checked""" : "") />
这是错误的图片


事实上,使用下面的标准if/else逻辑有一个简单的方法来解决这个问题,但我仍然想知道这个问题的答案,因为我在过去有过不止几个这样的复合C1 ISM,并且希望找到一个解决方案

@if(radioLabel.Trim() == inputValue.Trim())
{
  <input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="checked" />
}
else
{
  <input type="radio" name="@inputName" value="@radioLabel" required="@required" />
}
@if(radioLabel.Trim()==inputValue.Trim())
{
}
其他的
{
}
使用Html.Raw()怎么样:


还有if块,而不是三元函数,如下所示:

<input type="radio" name="@inputName" value="@radioLabel" required="@required" @if(radioLabel.Trim() == inputValue.Trim()) { @Html.Raw("checked=\"checked\"") } />


我不是剃须刀方面的专家,但希望这能有所帮助:)

你做错了,把剃须刀当作一个架线工来对待,尽管它比这聪明多了。特别是在这种情况下,您应该使用

正确的代码不是使用,而是将属性值设置为null(如果不希望呈现)

@{
    string checked = radioLabel.Trim() == inputValue.Trim() ? "checked" : null;

   <input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="@checked" />
}
@{
选中字符串=radioLabel.Trim()==inputValue.Trim()?“选中”:null;
}

这确实有效。我以前试过生的,但用了一根绳子。因为原始输出的IHtmlString显然不会接触它?谢谢wysockiOr也许我只是个白痴,这真的是剃须刀的问题,我一直认为是复合材料造成的;)谢谢,保利,很好用。我以前在Razor中使用过条件属性,但没有意识到复合Razor引擎中有条件属性。我错误地认为,因为文档中到处都提到MVC 3,所以Razor的版本与MVC4中Razor(2?)的版本一致,并且我认为条件属性是随Razor(2?)的版本一起发布的。谢谢你的信息。您提供的链接看起来非常熟悉:)Razor!=MVC!=网页。这一切都非常令人困惑,而微软显然要为此承担责任。复合C1使用网页引擎,它位于Razor的顶部。MVC本身位于网页之上。所以你可以在Razor或网页中做的一切,你可以在复合C1 Razor函数中做。
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @if(radioLabel.Trim() == inputValue.Trim()) { @Html.Raw("checked=\"checked\"") } />
@{
    string checked = radioLabel.Trim() == inputValue.Trim() ? "checked" : null;

   <input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="@checked" />
}