我在mvc上有这个模型:
public class User
{
public string Name
{
get;
set;
}
public IList<string>RelatedTags
{
get;
set;
}
}
以下类型视图(用户)编辑添加用户(AddEdit.aspx视图):
<div>
<%: Html.LabelFor(e => e.Name)%>
<%: Html.TextBoxFor(e => e.Name)%>
<%: Html.ValidationMessageFor(e => e.Name)%>
</div>
<div>
<%: Html.LabelFor(e => e.RelatedTags)%>
<%: Html.TextBoxFor(e => e.RelatedTags)%>
<%: Html.ValidationMessageFor(e => e.RelatedTags)%>
</div>
另一方面,我有一个“RelatedTags”字段。我需要(在动作控制器方面)与我添加的用户相关的标签列表。出于这个原因,我创建了一个自定义模型绑定器(获取文本框的字符串并将其作为List传递):
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
List<string> listoftags = bindingContext.ValueProvider.GetValue("RelatedTags").AttemptedValue.Split(',').ToList<string>();
return listoftags;
}
实际上我可以使用AddEdit.aspx添加一个新用户(在控制器端获取相关标签的列表,但是当我编辑用户时我不知道在哪里可以将此List转换为逗号字符串,并且我要么不知道应该在视图上更改这些行:
<div>
<%: Html.LabelFor(e => e.RelatedTags)%>
<%: Html.TextBoxFor(e => e.RelatedTags)%>
<%: Html.ValidationMessageFor(e => e.RelatedTags)%>
</div>
目前,为了以防万一,我为IList创建了一个扩展方法:
public static class Extensions
{
public static string ToCommaString<T>(this IList<T> input)
{
StringBuilder sb = new StringBuilder();
foreach (T value in input)
{
sb.Append(value);
sb.Append(",");
}
return sb.ToString();
}
}
在编辑用户时,您能否给我一些帮助,在输入字段中看到一个用逗号分隔的字符串与列表中的所有元素?
提前多多感谢。
最诚挚的问候。
何。
答案 0 :(得分:1)
也许你可以使用这个模型?
public class UserModel
{
public string Name { get; set; }
protected IList<string> RelatedTagsList { get; set; }
public string RelatedTags
{
get
{
return string.Join(",", RelatedTagsList.ToArray());
}
set
{
RelatedTagsList = value.Split(',').ToList();
}
}
}
不需要粘合剂和扩展方法。