C# 中地址格式的条件 <br>

Conditional <br> for address format in C#

我正在格式化我的应用程序以显示与特定工作单相关的地址。地址有时会使用第二行。我不想使用以下内容:

<%: ticket.ADDRESS2 %><br />

在这种情况下,如果对象为 null 或空,我仍然会中断,然后我有一个看起来很有趣的大 space。

我想我可以生成我自己的字符串,然后用这样的东西把它变成一个文字:

string str = ((Object)ticket.ADDRESS2 != "").ToString();
string sAdd2 = str + <br />;
myLiteral.Text = sAdd2;

但如果 Object 为 null 或为空,这实际上对我没有帮助(事实上,我什至不知道它是否有效。

然后我尝试了这个:

public string sAdd2
    {
        get
        {
            Object oAdd2 = ticket.ADDRESS2;
            if (oAdd2 != null)
            {
                string sAdd2 = ((Object)ticket.ADDRESS2 != "").ToString();
            }
            else
            {
                string sAdd2 = ((Object)ticket.ADDRESS2 == "").ToString();
            }
        }
    }

有了这个,我在 'get' 处得到错误(并非所有代码路径 return 一个值)。我觉得我正在做一件简单的事情。我只想让我的页面显示

地址行 1
地址行 2
城市、州邮政编码

地址行 1
城市、州邮政编码

有人指点一下吗?我查过 "conditional breaks" 但没找到有用的 return.

使用 if 语句

<%if (!string.IsNullOrEmpty(ticket.ADDRESS2)) { %>

   <%: ticket.ADDRESS2 %><br />

<%} %>

我过去所做的——在 MVC 项目中,但很容易在 WebForms 的代码中——是:

var lines = new [] {
  contact.Name,
  contact.AddressLine1,
  contact.AddressLine2,
  contact.AddressLine3,
  contact.PostCode
};

var address = String.Join("<br/>", lines.Where(l => !String.IsNullOrWhitespace(l));

然后使用适当的方法将 address 作为原始字符串写出。

删除空行,然后使用string.Join()添加换行符。

// Get the address lines to be displayed
string[] lines = new string[]
{
   ticket.Address1,
   ticket.Address2,
   ticket.Address3,
   ticket.Address4,
   ticket.ZipCode,
};

// Remove blank lines
IEnumerable<string> filledLines = lines.Where(s => !string.IsNullOrWhitespace(s));

// Add newlines between each line
string html = string.Join(@"<br />", filledLines);