我正在渲染一个下拉列表,在下拉列表中呈现的文本太长而不舒服。如何限制下拉列表中显示的字符数而不必返回控制器?
<option value="<%=order.ID %>"><%=order.Item %></option>
THX
答案 0 :(得分:3)
<%= order.Item.Length > 10 ? order.Item.Substring(0, 7) + "..." : order.Item %>
正如Dan在下面提到的那样,检查null并提取辅助方法是一个好主意。
public static class StringHelpers
{
public static string SmartSubstring(string value, int maxLength)
{
if(String.IsNullOrEmpty(value))
return String.Empty;
if(value.Length > maxLength)
return value.Substring(0, maxLength -3) + "...";
return value;
}
}
然后确保将此类包含在aspx的顶部,您可以执行以下操作:
<%= StringHelpers.SmartSubstring(Order.Item, 10) %>
答案 1 :(得分:1)
在我看来,我不喜欢很多逻辑,这种事情在整个过程中都很有用(不仅仅是在视图中)。
<option value="<%=order.ID %>"><%=order.Item.Truncate(10) %></option>
截断方法......
public static class StringExtensions
{
public static string Truncate(this string value, int trim)
{
//Don't do anything if the value is null, empty, or doesn't meet our trim constraint
if (string.IsNullOrEmpty(value) || value.Length <= trim)
{
return value;
}
return string.Format("{0}...", value.Substring(0, trim));
}
}
<强> 警告: 强> 我没有删掉省略号的长度。如果你愿意,你应该做一些额外的检查,以确保(trim-3)大于零。另外,你应该考虑修剪长度是否大于字符串的长度。我愿意,但我的大脑正在关闭过夜!
答案 2 :(得分:0)
在order.item上使用子字符串。如果你想要max是20个字符,那么选择与'...'连接的前17个字符