Удаленная проверка MVC в частичном представлении в мастер-макете - «При удалении с пауками не удалось найти ошибку для удаленной проверки» - PullRequest
0 голосов
/ 15 февраля 2012

Я только что закончил сайт LostPetListings.com, который имеет частичные представления в мастер-макете.У меня есть частичное представление «Создать учетную запись», которое имеет удаленную проверку свойства электронной почты, которая работает нормально.Я даже могу увидеть data-val-remote-url = "/ en-us / Validation / EmailExists" в html, он отлично работает при проверке запроса с помощью Firebug.Проблема: я получаю массу ошибок для "Не найден URL для удаленной проверки".когда робот Google попадает на сайт?Не могу понять почему? Электронное письмо, которое существует в db, является t@t.com для его проверки ..

Моя модель:

[Required(ErrorMessageResourceType = typeof(SharedStrings), ErrorMessageResourceName = "EmailRequired")]
[MyRemote("EmailExists", "Validation", "", ErrorMessageResourceType = typeof(SharedStrings), ErrorMessageResourceName = "EmailAlreadyExists")]
public string Email { get; set; }

Мой атрибут:

 public class MyRemoteAttribute : RemoteAttribute
    {
        public MyRemoteAttribute(string action, string controller, string area)
            : base(action, controller, area)
        {
            this.RouteData["area"] = area;
        }
    }

Контроллер валидации, украшенный:

 [OutputCache(Location = OutputCacheLocation.None, NoStore = true)]

Действие контроллера валидации:

 [HttpGet]
         public JsonResult EmailExists(string Email)
        {
            string culture = RouteData.Values["culture"]==null?"en-us":RouteData.Values["culture"].ToString().Replace("_", "-").ToLower();

            if (Email != "" && SecurityHelper.ReferrerIsValid) 
            {
                EndUser_Translated eut = endUserTranslatedRepository.Get(d => d.EndUser.Email == Email.Trim() && d.Culture == culture);

                if(eut==null)
                    return Json(true, JsonRequestBehavior.AllowGet);
                else
                    return Json(SharedStrings.EmailAlreadyExists, JsonRequestBehavior.AllowGet);

            }
            else
                return Json(SharedStrings.EmailAlreadyExists, JsonRequestBehavior.AllowGet);

         }

Как загружается частичное в мастер-макете:

@Html.Partial("_CreateAccount", new RegisterModel())

Все отлично работаетпоэтому не могу понять, почему я получаю эту ошибку «многие» от ботов [посмотрел IP, я ловлю с ошибкой в ​​журнале ошибок ... особенно Googlebot]?Может быть, это как-то связано с частичным кэшированием в мастер-макете или чем-то еще?Любые идеи / догадки приветствуются, даже если в конце они не верны, так как это может что-то вспомнить ..

1 Ответ

0 голосов
/ 15 февраля 2012

Вот и все ... У меня было исключение, которое стирало RouteValues.Values ​​["Культура"] в моих маршрутах ... на кэшированной странице отображалась правильная культура в URL-адресе ... но на любой навигации моя культурапропал .... так что проблема была вверх по течению.Короче говоря, если URL-зависимая операция действует странно, проверьте таблицу маршрутов ..?Это помогло мне

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