【发布时间】:2011-07-29 14:23:56
【问题描述】:
如果我有这样的 ViewModel:
public class SignupViewModel
{
[Required]
[DisplayName("Email:")]
public string EmailAddress { get; set; }
}
并使用 EditorFor 渲染表单字段:
@Html.EditorFor(model => model.EmailAddress )
它将呈现<input type="text">。很酷。
但在这种特殊情况下,我已经从不同的来源检索到电子邮件,我希望用这些数据预填充表单,并显示一个标签而不是文本框(因为我不希望他们更改电子邮件 - 不用担心为什么)。
我知道我可以使用 [UIHint],但我可以通过控制器以编程方式执行此操作吗?
例如:
var model = new SignupViewModel();
model.EmailAddress = GetFromMysterySource(); // How do i set a UIHint?
解决这个问题的最佳方法是什么?我应该完全使用单独的 ViewModel,这可能意味着将我的视图从强类型更改为 dynamic,或者我不应该使用 EditorFor,还是应该使用自定义编辑器模板?
建议/建议将不胜感激。
【问题讨论】:
标签: asp.net-mvc-3 razor data-annotations editortemplates modelmetadata