【发布时间】:2010-01-18 10:04:13
【问题描述】:
我的强类型视图继承自使用 Linq to SQL 创建的“Person”对象。在我的“编辑”视图中,我当然必须显示旧值:
<%= Html.TextBox("FirstName") %>
“FirstName”是 NCHAR,所以需要修剪。所以我最终得到了:
<%= Html.TextBox("FirstName", Model.FirstName.Trim()) %>
这行得通。但是当提交表单时(在 POST 之后)并且出现一些错误,我需要再次显示它:
[AcceptVerbsAttribute(HttpVerbs.Post), Authorize(Roles = "office"), HandleError]
public ActionResult Edit(Models.Person person)
{
if (!(_personService.ValidatePerson(person))) // Persona non valida
{ return View(person); }
}
如果由于某种原因用户离开文本框“FirstName”空白,则结果属性 Person.FirstName 将变为 null 并且 Model.FirstName.Trim() 会引发异常(对象引用未设置为对象的实例)。
有什么方法可以修改绑定并默认修剪所有字符串?或者对如何解决这个问题有任何想法?
更新: 似乎已确认是 MVC 2 行为.. 仍在寻找处理此问题的好方法。实际使用扩展方法:
public static string TrimOrDefault(this string value)
{
return value != null ? value.Trim() : string.Empty;
}
【问题讨论】:
-
@gremo 检查我对部分类示例的编辑。
标签: asp.net-mvc string binding trim defaultmodelbinder