我将我的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。
为什么无法找到控制器或操作?
答案 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方法中。