Asp.net mvc 找不到资源使用时出错";HttpPost“;内部控制器
您好Asp.net mvc 找不到资源使用时出错";HttpPost“;内部控制器,asp.net-mvc,Asp.net Mvc,您好我正在从事一个ASP.Net MVC 3项目,遇到一个名为“找不到资源”的错误。我的情况是我有 1:我使用自己的视图并在操作中返回它们。例如,我手动创建了一个视图,第一个名为“Create.cshtml”,并手动将其添加到这样的操作中 [HttpPost] Public ActionResult CreateStudent(StudentIfo studentinfo) { db.StudentInfo.add(studentinfo); db.SaveChanges(); Retur
我正在从事一个ASP.Net MVC 3项目,遇到一个名为“找不到资源”的错误。我的情况是我有
1:我使用自己的视图并在操作中返回它们。例如,我手动创建了一个视图,第一个名为“Create.cshtml”,并手动将其添加到这样的操作中
[HttpPost]
Public ActionResult CreateStudent(StudentIfo studentinfo)
{
db.StudentInfo.add(studentinfo);
db.SaveChanges();
Return View("~/Views/Student/Create.cshtml");
}
[HttpGet]在此操作之前效果很好,但为什么HttpPost不行
我的路线图上写着:
routes.MapRoute(" ",
"{controller}/{action}/{id}",
new { controller = "Student", action = "CreateStudent", id = UrlParameter.Optional }
);
2:每当我写[HttpPost]的时候,我都会遇到这个错误,如果我删除了它,那么一切都会好起来,如果这样的事情继续发生,那么如何保存数据
3:我的Create.cshtml有一个@Html.BeginForm(“CreateStudent”,“Student”,FormMethod.Post)
我不明白问题出在哪里??我搜索了很多,但没有得到一个好的答案
4:当我们使用自己的视图而不是使用Visual Studio脚手架模板时,什么是进行CURD操作的最佳方式,即我的方式正确吗??我需要自己的视图,然后根据它们编写控制器,而不是像Visual Studio那样先编写控制器,然后右键单击“添加视图”
请推荐一些好方法或任何网站或教程。简而言之,您需要两者,您需要[HttpGet]操作来返回用户可以输入值的初始表单,然后是[HttpPost]版本来执行持久化。通过此[HttpPost]方法,您应该重定向到操作(返回RedirectToAction(…),以确保重新加载页面不会重新运行post操作 因此:
就我个人而言,我将这些方法命名为GetCreateStudent和PostCreateStudent,并添加了两个带有限制Http方法的路由约束的路由(请参见)请阅读:谢谢@tereško提供的链接,但作为这个论坛的新手,我不知道这种格式,谢谢you@tommy谢谢编辑:-)没问题。请记住,当您使用[HttpPost]进行装饰时,只有在您向其发布时才会调用该方法(使用方法:POST或表单提交的ajax请求)。您将无法通过在浏览器中键入该路径来访问它。这是一个GET请求。
[HttpGet]
public ActionResult CreateStudent()
{
var viewModel = new CreateStudentViewModel { /* Set properties here or load data for it */ };
return View(viewModel);
}
[HttpPost]
public ActionResult CreateStudent(PostedValues values)
{
if (ModelState.IsValid)
{
// Create Student Here
return RedirectToAction(/* Jump to a logical place with a Get */)
}
/* Initialize correct error viewModel again and show the create student screen with validation errors */
return View(viewModel)
}