Мое строго типизированное представление наследуется от объекта «Личность», созданного с помощью Linq to SQL. В моей «Edit» View, я должен показать, конечно, старые значения:Модель привязки и отображения обрезанного строкового свойства
<%= 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 проверить мой выбор для частичного примера класса. – griegs