2

以下はコントローラーとビューです。[送信]ボタンをクリックしているときに、アプリケーションで「リソースが見つかりません」というエラーが発生します。Get and Postの使用は、MVCの非常に基本的な概念であることを私は知っています。Get and 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();
        }
    }
}

ビュー(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>
}

ありがとう

ポール

4

1 に答える 1

7

フォームに使用されているアクション名とコントローラー名が間違っています。そのはず

@using (Html.BeginForm("Index", "Home", FormMethod.Post))

アクション名は"Index"、それがで指定したものだからですActionNameAttribute。コントローラ名には「Controller」サフィックスを含めないでください。

于 2012-05-12T12:25:09.877 に答える