0

内容项 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 的调整,如此处所述,使用 MVCBridge 通过 URL 调用控制器上的操作(不是包,而是有关为控制器添加新路由的想法)。请注意,我已经覆盖了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空白页面的自定义路由时,由于ViewUmbraco 中的空白模板,但是当我取消注释路由时Stores,它在 url http://www.mysite.com/us/stores显示 404 /

请帮忙。

4

2 回答 2

0
[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);
    }
}

这是我经常使用的模式,应该可以解决您的问题。

于 2014-05-16T21:22:01.480 回答
0

可能只是我,但您配置的路由与您使用的 URL 不同。您的 URL 以开头,/us/但这是您的路线中缺少路径的一部分,因此它会抛出 404。

您可以将路线更改为“us/Stores/{action}/{id}”,看看是否可行。

于 2013-07-17T09:40:29.660 回答