我有一个具有List
类型的公共属性的模型我想为此类型创建一个自定义编辑器。
我想要的是一个TextArea,其中每一行都是List中的一个字符串。
public List<string> myListOfString {get;set;}
只是不知道从哪里开始...
看起来很简单,但无法弄清楚如何做到这一点。
答案 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);
}
}