C# 使用转换为字符串的数据列表填充Html.TextBox
标签:C# 使用转换为字符串的数据列表填充Html.TextBox,c#,asp.net-mvc,C#,Asp.net Mvc,标签: 显然,这段代码并不完美,我承认这一点。但是你会如何改进它呢?对我来说,它似乎有点邋遢。不是很干净,但它还有一个额外的好处,就是不在字符串末尾添加尾随空格 <p> <label for="Tags">Tags:</label> <% String tagsText = ""; foreach (Tag item in Model.Tags) { tagsText += item.
显然,这段代码并不完美,我承认这一点。但是你会如何改进它呢?对我来说,它似乎有点邋遢。不是很干净,但它还有一个额外的好处,就是不在字符串末尾添加尾随空格
<p>
<label for="Tags">Tags:</label>
<% String tagsText = "";
foreach (Tag item in Model.Tags)
{
tagsText += item.Name + " ";
}
%>
<%= Html.TextBox("Tags", tagsText.Trim()) %>
<%= Html.ValidationMessage("Tags", "*") %>
</p>
标签:
制作一个类标记列表,添加一个函数:
<p>
<label for="Tags">Tags:</label>
<% string tagsText = string.join(" ", (from t in Model.Tags
select t.Name).ToArray<string>()); %>
<%= Html.TextBox("Tags", tagsText) %>
<%= Html.ValidationMessage("Tags", "*") %>
</p>
类标记列表
继承列表
函数ToJoinedString()作为字符串
字符串结果=“”
foreach t作为Me.List中的标记
结果=t。名称+“”
下一个
返回result.Trim()
端函数
末级
然后在您的页面上:
class TagList
inherits List<Of Tag>
function ToJoinedString() as string
string result = ""
foreach t as Tag in Me.List
result = t.Name + " "
next
return result.Trim()
end function
end class
标签:
它的优点是可以在其他地方使用。使用如下扩展方法:
<p>
<label for="Tags">Tags:</label>
<%= Html.TextBox("Tags", Model.Tags.ToJoinedString()) %>
<%= Html.ValidationMessage("Tags", "*") %>
</p>
公共静态类StringExtensions
{
公共静态字符串联接(此列表值,字符分隔符)
{
StringBuilder StringBuilder=新的StringBuilder();
for(int i=0;i
你可以这样打电话:
public static class StringExtensions
{
public static string Join(this List<string> values, char separator)
{
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < values.Count; i++)
{
string value = values[i];
stringBuilder.Append(value);
if (i < (values.Count - 1))
{
stringBuilder.Append(separator);
}
}
return stringBuilder.ToString();
}
}
通过使用StringBuilder,您可能会获得(非常)小的性能改进,而不是其他一些已提供的字符串操作选项。我忘了在字符串中包含Trim()方法。更新这个可以写得更简洁一些:
String.Join(“,Model.Tags.Select(t=>t.Name.ToArray())
Wow。。甚至更好。谢谢公鸡酸
<%@ Import Namespace="YourExtensionsNamespaceHere" %>
<%= Html.TextBox("Tags", tagsText.Join(' ')) %>