Asp.net mvc MVC2在编辑textboxfor上的项目时出现问题
我在mvc上有这个模型:Asp.net mvc MVC2在编辑textboxfor上的项目时出现问题,asp.net-mvc,asp.net-mvc-2,lambda,extension-methods,Asp.net Mvc,Asp.net Mvc 2,Lambda,Extension Methods,我在mvc上有这个模型: public class User { public string Name { get; set; } public IList<string>RelatedTags { get; set; } } 公共类用户 { 公共字符串名 { 得到; 设置 } 公营部门 { 得到; 设置 } } 和以下类型的视图(用户)来编辑添加用户(AddEdit.aspx视图):
public class User
{
public string Name
{
get;
set;
}
public IList<string>RelatedTags
{
get;
set;
}
}
公共类用户
{
公共字符串名
{
得到;
设置
}
公营部门
{
得到;
设置
}
}
和以下类型的视图(用户)来编辑添加用户(AddEdit.aspx视图):
e、 名称)%%>
e、 名称)%%>
e、 名称)%%>
e、 相关标签)%>
e、 相关标签)%>
e、 相关标签)%>
另一方面,我有一个“RelatedTags”字段。我需要(在ActionController端)一个与我添加的用户相关的标签列表。为此,我创建了一个自定义模型绑定器(以获取文本框的字符串并将其作为列表传递):
public覆盖对象BindModel(ControllerContext ControllerContext,ModelBindingContext bindingContext)
{
List listoftags=bindingContext.ValueProvider.GetValue(“RelatedTags”).AttemptedValue.Split(',').ToList();
返回标签列表;
}
实际上,我可以使用AddEdit.aspx添加一个新用户(在控制器端,我得到一个相关标记的列表,但是当我编辑一个用户时,我不知道在哪里可以将该列表转换为逗号字符串,或者我不知道应该在视图上更改这些行:
<div>
<%: Html.LabelFor(e => e.RelatedTags)%>
<%: Html.TextBoxFor(e => e.RelatedTags)%>
<%: Html.ValidationMessageFor(e => e.RelatedTags)%>
</div>
e、 相关标签)%>
e、 相关标签)%>
e、 相关标签)%>
为了以防万一,我为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();
}
}
公共静态类扩展
{
公共静态字符串ToCommaString(此IList输入)
{
StringBuilder sb=新的StringBuilder();
foreach(输入中的T值)
{
附加(价值);
某人加上(“,”);
}
使某人返回字符串();
}
}
当我编辑一个用户时,你能给我一些帮助吗?在输入字段中看到一个用逗号分隔的字符串和列表中的所有元素
先谢谢你
致以最良好的祝愿
何塞。也许你可以用这个型号
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();
}
}
}
公共类用户模型
{
公共字符串名称{get;set;}
受保护的IList RelatedTagsList{get;set;}
公共字符串相关标签
{
得到
{
返回字符串.Join(“,”,RelatedTagsList.ToArray());
}
设置
{
RelatedTagsList=value.Split(',').ToList();
}
}
}
不需要粘合剂和延伸方法
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();
}
}
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();
}
}
}