ASP.NET Core 2.0を使用してWebアプリケーションを開発しています。私は部分ビュー(_NewOrder.cshtml)でフォームを使用し、このメインビューでASP.NETコアがHttpPostメソッドを使用してフォームを送信した後に同じページにリダイレクト
@using Microsoft.AspNetCore.Mvc.Rendering
@using MokaKukaMap.Orders.ViewModels.Models
@model MokaKukaMap.Orders.ViewModels.Models.NewOrderViewModel
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@Html.Partial("_NewOrder")
::私はNewOrder.cshtmlと呼ばれるメインビューを持っているすべての まず
<form asp-controller="NewOrder" asp-action="CreateOrder" class="well">
<div id="form-horizontal">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" id="eventID" class="form-control">
<div class="form-group">
<label asp-for="Address" class=""></label>
<div class="">
<input asp-for="Address" class="form-control">
<span asp-validation-for="Address" class="text-danger"> </span>
</div>
</div>
<div class="form-group">
<label asp-for="PhoneNumber" class=""></label>
<div class="">
<input asp-for="PhoneNumber" class="form-control">
<span asp-validation-for="PhoneNumber" class="text-danger"> </span>
</div>
</div>
</div>
<div id="ErrorsBox" class="alert alert-danger" style="display: none;"></div>
<div class="form-group">
<div class="">
<input type="submit" formnovalidate="formnovalidate" value="Submit new order" class="btn btn-primary" />
</div>
</div>
</form>
そしてもちろんI以下は、対応するコントローラとHttpPostアクションメソッドを持っている:
私は送信ボタンをクリックした場合の問題は、ページには、次のURLにリダイレクトされていることpublic class NewOrderController : Controller
{
private readonly INewOrderSaverRequestHandler _newOrderSaverRequestHandler;
public NewOrderController(INewOrderSaverRequestHandler newOrderSaverRequestHandler)
{
_newOrderSaverRequestHandler = newOrderSaverRequestHandler;
}
public IActionResult NewOrder()
{
return View();
}
[HttpPost]
public IActionResult CreateNewOrder(NewOrderViewModel newOrder)
{
_newOrderSaverRequestHandler.Handle(newOrder, ModelState);
return RedirectToPage("NewOrder");
}
}
: "http://localhost:13078/NewOrder/CreateOrder"。しかし、私はすでに私がここにStackOverflowで見つけたいくつかのソリューションを試してみましたが、私は希望の同じページに滞在することですので、「http://localhost:13078/NewOrder/NewOrder」のURLで
:return RedirectPage("NewOrder")
を使用して
- を - このIで.../NewOrder/CreateOrderに404エラーページにリダイレクトされています。さらに、私も試してみました
- 私はまだだけでなく、「.../NewOrder/CreateOrde」に向けています私は
- につながっていません以下:
return Page()
しかし、この依存関係/参照はasp.netコア2.0で不明です。 - さらに、私はHTMLフォームタグで "asp-route-returnurl"属性を設定することで問題を解決しようとしましたが、成功しませんでした。
return RedirectPage("/")
または
return RedirectPage("NewOrder/NewOrder")
のような他のcobinationsでそれを使用しようとしましたが、それらのどれも
return View("NewOrder")
で正解
私の問題はルーティングと関係があると思われます。私は私のStartup.csで次のルーティング設定を使用します。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Map}/{action=Index}/{id?}");
});
最後に少なくともではない私は、注釈ルーティングを使用しようとしましたが、それはまた私の問題を解決することができませんでした:
[Route("[controller]/NewOrder")]
[HttpPost]
public IActionResult CreateNewOrder(NewOrderViewModel newOrder)
{
_newOrderSaverRequestHandler.Handle(newOrder, ModelState);
return RedirectToPage("NewOrder");
}
それでは、私は新しいボタン(INewOrderSaverRequestHandler
によって処理される)を作成してから、同じページに留まることを望みます。自分のコードにどこに問題があるのでしょうか?前もって感謝します!
に起こっているなぜあなたはASP-アクション= "CreateOrder" ザッツを使用している
この
を交換してください"、"コントローラ ")。 – Azhar
スーパー!これは仕事です、ありがとう! – mirind4