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分隔的每个值的字符串,然后在发布时,需要将字符串拆分回集合