List <string>的MVC5编辑器模板

时间:2015-09-04 13:36:29

标签: asp.net-mvc-5

我有一个具有List

类型的公共属性的模型

我想为此类型创建一个自定义编辑器。

我想要的是一个TextArea,其中每一行都是List中的一个字符串。

public List<string> myListOfString {get;set;}

只是不知道从哪里开始...

看起来很简单,但无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用UIHint属性并指向自定义EditorTemplate。编辑器模板的工作方式与视图类似,因此您的模型将是List。但是我认为这不是一个好路径,因为你需要在列表之间转换为文本,这会为表示层添加逻辑。

在这种情况下我要做的是创建一个新的ViewModel,其列表是一个String。让控制器处理从String到List的转换。

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);
    }

}