1
私は私のフォーム以下のヘルパーラップするために使用しています:ASP.NET MVC:リクエストが間違った方法でキャッチされているのはなぜですか?
[SomeFilter]
[ChildActionOnly]
[AcceptVerbs(HttpVerbs.Get)]
public PartialViewResult Edit(int id)
{
//Some Code
}
[SomeFilter]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(MyViewModel model, string submit) {
//Some Code
}
:私は二つの方法、私の部分図とPOSTリクエストを処理するための別のものをロードするための1つを持っている私のコントローラで
@using (Html.BeginForm("Edit", "MyController", FormMethod.Post)) { ... }
を
ユーザーが空のフォームを送信する場合を除いて、すべてが正常に機能しているようです。その場合、要求はPOSTメソッドの代わりにGETメソッドによって捕捉されています。
"アクション 'Edit'は子リクエストによってのみアクセス可能です。
GETオーバーロードには[ChildActionOnly]フィルタしかありません。私はなぜこれが起こっているのか分からない。両方とも異なっており、両方とも装飾されています。
提案がありますか?
部分図コード:
@model MVC.Models.MyViewModel
@using (Html.BeginForm("Edit", "MyController", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
@Html.AntiForgeryToken()
<div class="row margin-top-20 form-group text-center">
<div class="col-md-3 col-lg-offset-2">
@Html.LabelFor(m => m.ManyItemsAvailable)
@Html.ListBox("ManyItemsAvailable", Model.ItemsAvailable)
</div>
<input type="submit" class="btn btn-default" value=">" id="add" name="submit" />
<input type="submit" class="btn btn-default margin-top-10" value="<" id="remove" name="submit" />
<div class="col-md-3">
@Html.LabelFor(m => m.ManyItemsSelected)
@Html.ListBox("ManyItemsSelected", Model.ItemsSelected)
</div>
</div>
}
フォームリロードで呼び出されるだけではないですか?私はブラウザからそれをデバッグし、どの点でサーバーが呼び出され、ブラウザから送信されているものと一致するかを確認します。 – Igor
@Igorではなく、いくつかのブレークポイントがあります。サブミットをクリックするとすぐに例外がスローされ、ChildActionOnlyフィルタが使用されているため、コントローラに到達することはありません。 –
カミソリビューを投稿できますか? –