我输出的地址我想用逗号分隔。 如果我在输出地址之前没有包含任何html,则会正确显示,而不会有任何额外的空格。
示例:
97 Glen Road,Holywood,BT18 0LE
目前获取:
97 Glen Road,Holywood,BT18 0LE
我的代码是:
<p class="no-margin-top">@Html.DisplayFor(modelItem => item.Address1)
@if(!string.IsNullOrEmpty(item.Address2)){
@:, @Html.DisplayFor(modelItem => item.Address2)
}
@if(!string.IsNullOrEmpty(item.Address3)){
@:, @Html.DisplayFor(modelItem => item.Address3)
}
@if(!string.IsNullOrEmpty(item.Town)){
@:, @Html.DisplayFor(modelItem => item.Town)
}
@if(!string.IsNullOrEmpty(item.County)){
@(", ")@("Co. ")@Html.DisplayFor(modelItem => item.County)
}
@if(!string.IsNullOrEmpty(item.Postcode)){
@(", ")@Html.DisplayFor(modelItem => item.Postcode)
}
@if(!string.IsNullOrEmpty(item.Country)){
@(", ")@Html.DisplayFor(modelItem => item.Country)
}
我尝试过以不同方式输出逗号,如上所示但仍然得到相同的结果。
我也尝试从代码中删除所有空格以及使用@ Html.Raw。
如果有人对此有所修正或建议采用更好的方法,我将不胜感激。
更新
由于框架内的变化,Darin的解决方案现在会产生错误。
您需要确保使用的是System.Linq
然后修改Darin的代码如下:
public string FormattedAddress
{
get
{
var values = new[] { Address1, Address2, Address3, Town, Postcode, "Co. " + County }.Where(x => !string.IsNullOrEmpty(x));
return string.Join(", ", values);
}
}
答案 0 :(得分:1)
public string FormattedAddress
{
get
{
var values = new[] { Address1, Address2, Address3, Town, Postcode, "Co. " + County }
.Where(!string.IsNullOrEmpty);
return string.Join(", ", values);
}
}
然后在你的视图中用以下内容替换混乱:
<p class="no-margin-top">
@Html.DisplayFor(modelItem => item.FormattedAddress)
</p>
如果现在您告诉我您违反了所有良好做法并且没有使用视图模型,但是直接将您的域实体传递给视图,除了告诉您这是错误的,您可能会以某种方式破解它观点:
<p class="no-margin-top">
@{
var values = new[] { item.Address1, item.Address2, item.Address3, item.Town, item.Postcode, "Co. " + item.County }
.Where(!string.IsNullOrEmpty);
var formattedAddress = string.Join(", ", values);
}
@formattedAddress
</p>
但老实说,请使用视图模型。
答案 1 :(得分:0)
尝试使用剃刀文本标记强制逗号加空格为文本。这可能是一个剃刀解释问题。
{<text>, </text>@Html.DisplayFor(modelItem => item.Address2)}
祝你好运