gpt4 book ai didi

asp.net-mvc-3 - MVC3 Razor 编辑器/显示模板和泛型

转载 作者:行者123 更新时间:2023-12-01 09:34:32 24 4
gpt4 key购买 nike

有一些关于 mvc 模板和泛型的问题,但似乎与我正在寻找的内容无关。考虑以下模型:

namespace MyNamespace
{
public class ModelBase { /* Not important for example */ }

public class MyModel : ModelBase
{
public string Name { get; set; }
}

public class MyViewModel
{
public IEnumerable<ModelBase> Data { get; set; }
}
}

还有一个 Controller :

public class HomeController : Controller
{
public ActionResult Index
{
return View(new MyViewModel { Data = new List<MyModel>() })
}
}

Razor View Views/Home/Index.cshtml 如下所示:

@model MyNamespace.MyViewModel
@Html.EditorFor(m => m.Data)

那里没什么特别的。如果我想要一个显示或编辑器模板,我可以在 Views/Shared/EditorTemplate 或 Views/Home/EditorTemplates 下创建一个名为 MyModel.cshtml 的文件,它会正确找到它。

如果我想在显示列表时为 ModelBase 的每个实现做一些不同的事情怎么办? Mvc 取景器将在上述任何路径中正确找到 List'1.cshtml 模板。但是我需要做的是为 List`1[MyModel].cshtml

做一个模板

我似乎无法获得正确的文件命名。到目前为止我尝试过的(相对于这个示例命名):

  • List`1[MyModel].cshtml
  • List`1[[MyModel]].cshtml
  • List`1[MyNamespace.MyModel].cshtml
  • List`1[[MyNamespace.MyModel]].cshtml

如果可能,我想避免编写自定义取景器。如果我不能让上面的东西工作,我现在能想到的唯一选择就是让 List`1.cshtml 调用一个从 List 推导出命名的部分。

最佳答案

一个很晚的回复,如果其他人碰到这个同样的问题很有用(就像我几分钟前试图记住如何做到这一点)

您可以使用 UIHintAttribute定义编辑器的名称

public class MyViewModel
{
[UIHint("MyModel")]
public IEnumerable<ModelBase> Data { get; set; }
}

关于asp.net-mvc-3 - MVC3 Razor 编辑器/显示模板和泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10616042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com