Схожу с ума сейчас. У меня есть решение MVC, которое я обновил с MVC 1 до 2. Все работает нормально .... кроме проверки!
Вот код:
В контроллере:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Security.Principal;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
using System.Web.UI;
using MF.Services.Authentication;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
namespace MF.Controllers
{
//basic viewmodel
public class LogOnViewData
{
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
}
[HandleError]
public class AccountController : Controller
{
[HttpPost]
public ActionResult LogOn(LogOnViewData lvd, string returnUrl)
{
if (ModelState.IsValid)
{
//do stuff - IsValid is always true
}
}
}
}
ModelState всегда действителен. Модель заполняется правильно, однако. Поэтому, если я оставлю имя пользователя и пароль пустыми и отправлю форму, состояние модели все еще будет в силе. Argh!
Дополнительная информация: использование структурной карты для IoD. Ранее, перед обновлением до MVC 2 использовалась библиотека аннотаций данных MS, так было в моем global.asax.cs:
ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder ();
Удалите это сейчас.
Я уверен, что делаю что-то очень простое и неправильное. Если бы кто-то мог указать на это, это было бы чудесно.
Приветствия