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(' ')) %>