如何在不同的控制器

时间:2016-07-18 08:13:01

标签: asp.net ajax asp.net-mvc

我有以下情况。

路线配置:

routes.MapRoute(
    name: "SellerRegistration",
    url: "Registration/{action}/{id}",
    defaults: new { controller = "SellerRegistration", action = "Seller", id = UrlParameter.Optional, area = "" },
    namespaces: new[] { "MyCompany.Controllers" }
);

因此,当网址为www.example.com/Registration/Seller时,上述路线将匹配并显示视图而不会出现任何问题。

class SellerRegistration
{
   public ActionResult Seller()
   {
      return View("Seller");
   }

   [AjaxOnly]
    public bool ValidateUserEmail(string email)
    {
        return _userService.ValidateUserEmail(email);
    }
}

在我的观看Seller.cshtml中,我试图对方法ValidateUserEmail()进行ajax调用。

我正在进行ajax调用,如下所示:

$.ajax({
            type: "POST",
            url: rootUrl + "/SellerRegistration/ValidateUserEmail",
            cache: false,
            async: false,
            data: { email: $("#Email").val() },
            success: function (data) {
                if (data === 'True') {
                    //redirect to login page
                    window.location.href = newUrl;
                } else {
                    $("#otherDetails").show();
                    $("#emailValidation").hide();
                    $("#submitCompleteFormDiv").show();
                }
            },
            error: function (data, jqXhr) {
                console.log(jqXhr.status);
            }
        });

我也尝试过在上面的ajax方法中生成url。

url: '@Url.Action("SellerRegistration", "ValidateUserEmail")'

但是我得到了

  

401 - 未经授权的错误。

由于我配置的路由,我猜不能进行ajax调用。但是,需要该路由来满足应用程序中的其他方案。

进行ajax调用时,网址格式类似于www.example.com/Registration/Seller

因此,浏览器会从ValidateUserEmail启动对控制器SellerRegistration内的www.example.com/Registration/Seller方法的ajax调用。

由于没有名为Registration的真实控制器,当在ValidateUserEmail()控制器内对SellerRegistration进行ajax调用时,我收到401 Unauthorized错误。

有人可以建议是否有任何技术或解决方法使其成为可能。

谢谢。

0 个答案:

没有答案