Хобрук: Ваш путь к мастерству в программировании

Как реализовать удаленную проверку в Umbraco 6.0 для MVC

URL элемента контента: http://www.mysite.com/us/signup, что приводит к ошибке как указано ниже,

Сообщение об ошибке No url for remote validation could be found.

Атрибут проверки находится в свойстве в модели.

[Remote("IsStoreExists", "Stores", AdditionalFields = "StoreId", ErrorMessageResourceName = "StoreAlreadyExists", ErrorMessageResourceType = typeof(Resources.Stores._CreateOrEdit))]
public string StoreName { get; set; }

Я попробовал твик mvcbridge, как указано здесь URL-using-MVCBridge" rel="nofollow">Вызов действий на контроллере через URL с использованием MVCBridge (не пакет, а идея добавления нового маршрута для контроллера). Обратите внимание, что я переопределил HttpApplication в этом приложении Umbraco 6.0 как public class MvcApplication : UmbracoApplication, который вызывает класс RouteConfig, как показано ниже.

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        RouteTable.Routes.MapRoute(
            "Stores", // Route name call it anything you want
            "Stores/{action}/{id}", // URL with parameters,
            new { controller = "Stores", action = "IsStoreExists", id = UrlParameter.Optional }
            );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

Кажется, это действует, поскольку, когда я комментирую пользовательский маршрут с именем Stores, появляется пустая страница из-за пустого шаблона в View в Umbraco, но когда я раскомментирую маршрут Stores, он показывает 404 по адресу http://www.mysite.com/us/stores/

Пожалуйста, помогите.


Ответы:


1

Это может быть только я, но настроенный вами маршрут не совпадает с URL-адресом, который вы используете. Ваш URL-адрес начинается с /us/, но эта часть пути отсутствует в вашем маршруте, поэтому он выдаст ошибку 404.

Возможно, вы могли бы изменить свой маршрут на «us/Stores/{action}/{id}» и посмотреть, работает ли это.

17.07.2013

2
[Remote("IsStoreExists", "StoresSurface", AdditionalFields = "StoreId", HttpMethod = "POST", ErrorMessageResourceName = "StoreAlreadyExists", ErrorMessageResourceType = typeof(Resources.Stores._CreateOrEdit))]
public string StoreName { get; set; }

Поверхностный контроллер, который будет соответствовать, выглядит примерно так:

using System.Web.Mvc;

using Umbraco.Web.Mvc;

/// <summary>   Stores controller. </summary>
public sealed class StoresSurfaceController : SurfaceController
{
    /// <summary>   Does the store exist. </summary>
    /// <param name="StoreName"> Name of the store. </param>
    /// <param name="StoreId"> Identifier of the store. </param>
    /// <returns>   true if the store exists, false if not. </returns>
    [HttpPost]
    public JsonResult IsStoreExists(string StoreName, long StoreId)
    {
        return this.Json(true);
    }
}

Это шаблон, который я часто использую, и он должен решить вашу проблему.

16.05.2014
Новые материалы

Решения DBA Metrix
DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

Начало работы с Блум
Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...