2017-11-08 15 views
0

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 RedirectPage("/")または return RedirectPage("NewOrder/NewOrder")のような他のcobinationsでそれを使用しようとしましたが、それらのどれも return View("NewOrder")で正解
  • につながっていません以下:return Page()しかし、この依存関係/参照はasp.netコア2.0で不明です。
  • さらに、私はHTMLフォームタグで "asp-route-returnurl"属性を設定することで問題を解決しようとしましたが、成功しませんでした。

私の問題はルーティングと関係があると思われます。私は私の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によって処理される)を作成してから、同じページに留まることを望みます。自分のコードにどこに問題があるのでしょうか?前もって感謝します!

答えて

1

この戻りRedirectToAction(「ActionMethodを試すことがCreateOrderのMethodeの

+1

に起こっているなぜあなたはASP-アクション= "CreateOrder" ザッツを使用している

<form asp-controller="NewOrder" asp-action="NewOrder" class="well"> 

この

<form asp-controller="NewOrder" asp-action="CreateOrder" class="well"> 

を交換してください"、"コントローラ ")。 – Azhar

+0

スーパー!これは仕事です、ありがとう! – mirind4

関連する問題