为什么找不到Controller / Action路径?

时间:2015-01-16 17:21:02

标签: javascript c# asp.net-mvc knockout.js

我将我的observables从js发布到服务器端。但是我从firebug收到了这条错误消息。

“POST http://localhost:54964/Administration/User/CreateUser”404 Not Found

UserModel.js(我的knockoutjs)

return function () {
    var self = this;
    self.email = ko.observable("");
    self.password = ko.observable("");

    self.createUser = function () {
        console.log("hey");
        webRequest.postJSON("/Administration/User/CreateUser", ko.toJSON(self), self.saveSucceeded);
    }

    self.saveSucceeded = function (result) {
        utils.showSuccess("OK..");
        window.location.href = "http://" + window.location.host + "/#/Administration/AllUsers";
    }
}

我有UserController.cs和CreateUser动作。但是我收到了这个错误。我的行动方法无法找到。

通过viewmodel发送了observable

AddUserModel.cs

public class AddUserModel
    {
        [Required(ErrorMessage = "Eposta alanı boş olamaz.")]
        [RegularExpression(@"^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$", ErrorMessage = "Geçerli bir e-posta adresi giriniz")]
        public string Email { get; set; }

        [Required(ErrorMessage = "Şifre alanı boş olamaz.")]
        public string Password { get; set; }
    }

在控制器中创建用户的方法。

UserController.cs

[HttpPost]
  public ActionResult CreateUser(AddUserModel model)
        {
            MembershipCreateStatus status;
            Membership.CreateUser(model.Email, model.Password, model.Email, null, null, true, out status);
            if (status == MembershipCreateStatus.Success)
            {
                return Json(true);
            }
            else
            {
                return new Json(false);
            }
        }

注意:管理是“文件夹”。我把它改为区域登记的“区域”。因此我删除了管理“文件夹”,然后添加了管理“区域”。这可能是一个原因。我不知道。

错误消息=未找到路径'/ Administration / User / CreateUser'的控制器或未实现IController。

为什么无法找到控制器或操作?

1 个答案:

答案 0 :(得分:0)

在您所在的区域内,您将拥有一个名为 AdministrationAreaRegistration.cs 的文件

在该文件中,您应该定义您的路线,如下所示:

public class AdministrationAreaRegistration : AreaRegistration
{
     public override string AreaName{
          get{ "Administration"}
     }

     public override void RegisterArea(AreaRegistrationContext context){
          context.MapRoute(
               "Administration_default",
               "Administration/{controller}/{action}/{id}",
               new { action = "Index", id = UrlParameter.Optional},
               new [] { "YourControllerNamespace" }
          );
     }


}

阅读有关区域注册的更多here

确保在此文件 App_Start / RouteConfig.cs 中有这一行:

AreaRegistration.RegisterAllAreas();
在RegisterRoutes方法中