0

カンマ区切りしたいアドレスを出力しています。アドレスを出力する前にhtmlを含めないと、スペースを追加せずに正しく表示されます。

例:

97グレンロード、ハリウッド、BT18 0LE

現在取得中:

97グレンロード、ハリウッド、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);
        }
    }
4

2 に答える 2

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>

しかし、正直なところ、ビューモデルを使用してください。

于 2012-09-25T11:06:03.123 に答える
0

かみそりのテキストマークアップを使用して、カンマとスペースをテキストにするように強制してみてください。それはかみそりの解釈の問題かもしれません。

{<text>, </text>@Html.DisplayFor(modelItem => item.Address2)}

幸運を

于 2012-09-25T11:04:30.300 に答える