asp.net-mvc-3 – MVC3 EditorFor动态属性(或需要解决方法)
我正在构建一个系统,提出问题并收到答案.每个问题都可以有一个自己类型的aswer.我们暂时将它限制为String和DateTime.在Domain中,问题以下列方式表示:
public class Question { public int Id { get; set; } public string Caption { get; set; } public AnswerType { get; set; } } ,其中AnswerType是 enum AnswerType { String,DateTime } 请注意,实际上我有更多的答案类型. 我提出了创建MVC模型的想法,从Question派生并向其添加Answer属性.所以它必须是这样的: public class QuestionWithAnswer<TAnswer> : Question { public TAnswer Answer { get; set; } } 在这里开始出现问题.我希望有一个通用的视图来绘制任何问题,所以它需要是这样的: @model QuestionWithAnswer<dynamic> <span>@Model.Caption</span> @Html.EditorFor(m => m.Answer) 对于String我想在这里有简单的输入,对于DateTime我将定义我自己的视图.我可以从控制器传递具体模型.但问题是在渲染阶段,自然地,它无法确定Answer的类型,特别是如果它最初为null(String的默认值),因此EditorFor不为String提取任何内容,也不为DateTime中的所有属性输入. 我确实理解问题的本质,但有没有优雅的解决方法?或者我必须实现我自己的逻辑来选择基于控件类型(大丑开关)的编辑器视图名称? 解决方法
您仍然可以使用Html.EditorFor(..),但指定第二个参数,它是编辑器模板的名称.你在Question对象上有一个属性是AnswerType,所以你可以做类似……
@Html.EditorFor(m => m.Answer,@Model.AnswerType) EditorTemplates文件夹中的每个AnswerTypes都定义了一个视图.即“字符串”,“日期时间”等. 编辑:只要Answer对象为String为null,我会在其中放置一个占位符对象,因此“String”编辑器模板中的模型不为null. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 用ASP.NET MVC实现MEF?
- asp.net-core – 如何在asp.net 5类库nuget包中包
- asp.net – 如何阻止MonoDevelop在调试时打开Saf
- asp.net-mvc – 有没有人能够或者至少试图将液体
- ASP.NET – UpdatePanel和JavaScript
- 如何通过给定的项目值显示Motobit Multi.Diction
- 任何可用于在ASP.NET MVC页面上选择时间的JQuery
- 如何获取asp.net Windows身份验证中的用户详细信
- asp.net – 如何通过LINQ获得第一级的孩子
- asp.net-mvc – Asp.Net MVC 4:我们可以设置Lay