【发布时间】:2011-06-17 11:11:01
【问题描述】:
代码如下:
public class MessagesController
{
public virtual ActionResult Compose(ComposeMessageViewModel composeMessageViewModel = null)
{
if (composeMessageViewModel == null)
{
// never executed as composeMessageViewModel is always not null
composeMessageViewModel = new ComposeMessageViewModel();
}
return View(composeMessageViewModel);
}
}
以及ComposeMessageViewModel的定义
public class ComposeMessageViewModel
{
[DisplayName("To:")]
[NotEmpty] //custom ValidationAttribute
public IEnumerable<MessageRecipientViewModel> Recipients { get; set; }
[DisplayName("Subject:")]
public string Subject { get; set; }
public string Body { get; set; }
}
问题是,当我导航到/Messages/Compose(没有查询字符串,没有表单参数)时,我希望该参数为空,这样就不会发生验证错误,但它是一个包含所有字段的实际对象/properties 设置为默认值。
这是不可取的,因为它会导致模型验证被执行,而它不应该是因为尚未输入任何内容!
没有为这个类设置自定义的ModelBinder,默认的ModelBinder也没有改变。
WTF?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-2 .net-3.5