ASp.net MVC 2 изменил принцип работы tryupdatemodel. Какой самый простой способ исправить мой код? - PullRequest
2 голосов
/ 25 февраля 2010

Я инициализирую свои строки пустыми, а не нулевыми. Это отлично работало в MVC 1, используя tryupdatemodel, так как любые текстовые записи, в которых не было текста, были бы установлены в пустую строку, в MVC 2 RC2, по-видимому (по крайней мере из моего тестирования), он устанавливает их в ноль / ничего. Так что теперь я получаю ошибки от моего слоя проверки, который требует, чтобы они были пустыми, а не нулевыми. Еще одна проблема, с которой я столкнулся, заключается в том, что теперь с помощью отражения он вызывает все свойства моих объектов, включая те, которые я не указал в операторе bind include, и даже свойства только для чтения, которые не могут быть установлены.

Кто-нибудь имеет представление о самом простом способе обойти эти проблемы без полного изменения всего моего кода? Или я должен просто смириться и

Ответы [ 2 ]

0 голосов
/ 25 февраля 2010

Чтобы исправить строку со значением по умолчанию, равным нулю, а не "", мне сначала нужно было сделать это:

Public Class NullToEmptyStringModelBinder
Inherits DefaultModelBinder

Protected Overrides Sub SetProperty(ByVal controllerContext As System.Web.Mvc.ControllerContext, ByVal bindingContext As System.Web.Mvc.ModelBindingContext, ByVal propertyDescriptor As System.ComponentModel.PropertyDescriptor, ByVal value As Object)
    If value Is Nothing AndAlso propertyDescriptor.PropertyType Is GetType(String) Then
        value = ""
    End If



    MyBase.SetProperty(controllerContext, bindingContext, propertyDescriptor, value)
End Sub
End Class

А затем добавьте в приложение запуск:

ModelBinders.Binders.DefaultBinder = New NullToEmptyStringModelBinder
0 голосов
/ 25 февраля 2010

О свойствах, которые вы не привязали - asp.net mvc 2 rc имеет это изменение от проверки ввода до проверки модели, вот как это работает сейчас
Полагаю, у вас проблема со строкой также из-за изменений, внесенных в RC2, ознакомьтесь с заметками о выпуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...