Asp.net mvc 5 列表MVC5编辑器模板
我有一个具有列表类型的公共属性的模型 我想为这种类型创建一个自定义编辑器 我想要的是有一个文本区域,其中每一行都是列表中的一个字符串Asp.net mvc 5 列表MVC5编辑器模板,asp.net-mvc-5,Asp.net Mvc 5,我有一个具有列表类型的公共属性的模型 我想为这种类型创建一个自定义编辑器 我想要的是有一个文本区域,其中每一行都是列表中的一个字符串 public List<string> myListOfString {get;set;} 只是不知道从哪里开始 它看起来很简单,但不知道如何做到这一点。您可以使用UIHint属性并指向自定义编辑器模板。编辑器模板的工作方式类似于视图,因此您的模型将是列表。然而,我认为这不是一个好的路径,因为您需要将列表转换为文本或从列表转换为文本,这将为表示层添加
public List<string> myListOfString {get;set;}
只是不知道从哪里开始
它看起来很简单,但不知道如何做到这一点。您可以使用UIHint属性并指向自定义编辑器模板。编辑器模板的工作方式类似于视图,因此您的模型将是列表。然而,我认为这不是一个好的路径,因为您需要将列表转换为文本或从列表转换为文本,这将为表示层添加逻辑 在本例中,我要做的是创建一个新的ViewModel,其中列表是一个字符串。让控制器处理从和到字符串/列表的转换
public class Classroom
{
public int ClassNumber { get; set; }
public string Teacher { get; set; }
public List<string> Students { get; set; }
...
}
public class ClassroomViewModel
{
public int ClassNumber { get; set; }
[DataType(DataType.MultilineText)]
public string StudentsNames { get; set; }
...
}
public class SchoolController : Controller
{
public ActionResult SomeAction(int classroomId)
{
Classroom model = ... // Get the original model from somewhere
var viewModel = new ClassroomViewModel();
viewModel.ClassNumber = model.ClassNumber;
foreach (string item in model.Students)
{
viewModel.StudentNames += item + "\n";
}
return View(viewModel);
}
}
绑定到单个值,而不是值的集合。不确定为什么要将集合绑定到文本区域,但需要将列表转换为由Environment.NewLine分隔的每个值的字符串,然后在发布时,需要将字符串拆分回集合