Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';是否找到t控制器/操作路径?_Javascript_C#_Asp.net Mvc_Knockout.js - Fatal编程技术网

Javascript 为什么可以';是否找到t控制器/操作路径?

Javascript 为什么可以';是否找到t控制器/操作路径?,javascript,c#,asp.net-mvc,knockout.js,Javascript,C#,Asp.net Mvc,Knockout.js,我将我的观察结果从js发布到服务器端。但是我从firebug那里得到了这个错误消息 找不到“POST”404 UserModel.js(my knockoutjs) 我有UserController.cs和CreateUser操作。但是我犯了这个错误。找不到我的操作方法 由viewmodel发送的可观测数据 AddUserModel.cs return function () { var self = this; self.email = ko.observable("");

我将我的观察结果从js发布到服务器端。但是我从firebug那里得到了这个错误消息

找不到“POST”404

UserModel.js(my knockoutjs)

我有UserController.cs和CreateUser操作。但是我犯了这个错误。找不到我的操作方法

由viewmodel发送的可观测数据

AddUserModel.cs

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";
    }
}
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; }
    }
[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);
            }
        }
以及在控制器中创建用户的方法

UserController.cs

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";
    }
}
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; }
    }
[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。


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

在您的区域内,您会找到,并且您应该有一个名为AdministratoreAregistration.cs的文件

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";
    }
}
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; }
    }
[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);
            }
        }
在该文件中,您应该定义路由,如下所示:

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" }
          );
     }


}
了解更多有关区域注册的信息

确保在此文件App_Start/RouteConfig.cs中有以下行:

AreaRegistration.RegisterAllAreas();

在RegisterRoutes方法中。

我们怎么知道?我们无法访问您的代码(提示:先发布您的MVC路线)。发布我的路线不是必需的,我只想说,在我将管理“文件夹”转换为管理“区域”之前,我的程序运行良好。我这样做之后,它就不起作用了。正如我在文章中提到的,你认为客户端代码在向MVC应用程序发出post请求之前和之后所做的无关细节对于解决操作未被命中的问题比路由更重要吗?难怪您的代码不起作用;)我做到了。首先创建项目时,我添加了一个名为Administration的文件夹。在我需要AdministrationareRegistration文件之后,为此我删除了Administration文件夹,并使用AdministrationareRegistration创建了一个名为Administration的区域。我已将文件夹复制到此新区域。在所有这些之后,我的js开始不发布更新我的答案。发布更多的代码,很难像这样帮助你@用户2923864它有帮助吗@用户2923864