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