私の問題は一般的なエラーであり、この問題に対して多くの回答を試みましたが、まだうまくいきません。したがって、最初から始めるために、Html.BeginForm ヘルパーを使用する MVC プロジェクトに部分的なフォームがあります。
<%using (Html.BeginForm("MyAction", "MyController", FormMethod.Post, new{@class = "form-class"}))
「MyAction」と「MyController」は実際の名前ではありませんが、下線の付いた名前が確認されると解決されます。私のコントローラーでの私のアクションは次のとおりです。
[HttpPost]
public ActionResult MyAction(int id, FormCollection form)
{
EditedData dt = new EditedData();
// does some db submits and returns edited data
return View(dt);
}
したがって、よくある問題は、[HttpPost] を使用すると「リソースが見つかりません」というエラーが返されることです。[HttpPost] をコメントアウトしてデバッグしたところ、MyAction にヒットしたため、ルーティングされません (?)。私の global.asax変更されていません:
public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
私が言うように、私は他の投稿で他の回答を試しましたが、それはポスターでうまくいくようですが、まだ問題があります. 私は何が欠けていますか?
PS View Sourceでは、フォームタグが次のように表示されます。
<form method="post" action="690" id="form1">
アクションが MyAction を指す必要がある場合。「MyAction」を指すように Html.BeginForm を設定するにはどうすればよいですか?