ASP.NET MVC 3 RAZOR:如何使用POST,它给出错误"找不到资源"

Pau*_*aul 2 get http-post razor asp.net-mvc-3

以下是控制器和视图.单击[提交]按钮时,应用程序会引发错误"无法找到资源".我知道使用Get和Post是MVC的非常基本的概念.在使用Get和Post以及使用以下代码时错误的情况下,是否有任何实际情况可以让我明白这个概念.

控制器:

namespace MVCModelBinding.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost, ActionName("Index")] 
        public ActionResult IndexPost()
        {
            if (Request.Form.Count > 0)
            {

                string id = Request.Form["ID"];

                string fname = Request.Form["FirstName"];

                string lname = Request.Form["LastName"];

                ViewBag.StatusMessage = "Employee data received successfully for ID " + id + "!";

            }

            return View();
        }
        public ActionResult About()
        {
            return View();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

view(index.chtml)

@using (Html.BeginForm("IndexPost", "HomeController",FormMethod.Post))
{
    <table>
        <tr>
            <td>
                Employee ID
            </td>
            <td>
                @Html.TextBox("ID")
            </td>
        </tr>
        <tr>
            <td>
                First name
            </td>
            <td>
                @Html.TextBox("FirstName")
            </td>
        </tr>
        <tr>
            <td>
                Last Name
            </td>
            <td>
                @Html.TextBox("LastName")
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="Submit" />
            </td>
        </tr>
    </table>
}
Run Code Online (Sandbox Code Playgroud)

谢谢

保罗

Jon*_*Jon 7

用于表单的操作名称和控制器名称是错误的.它应该是

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
Run Code Online (Sandbox Code Playgroud)

动作名称只是"Index"因为你指定的是ActionNameAttribute.控制器名称不应包含"Controller"后缀.