ASP.NET MVC 画面遷移(POST)
今回はPOSTで画面遷移をやってみます。前回の続きからやるので、前回の内容で環境構築しておいて下さい。同じコントローラ内で別Viewに画面遷移
同じコントローラ内で別Viewを表示するには、Viewを戻すときに別のView名を指定します。Hello.cs
namespace HelloWorld.Models
{
public class Hello
{
public string Str1 { get; set; }
public string Str2 { get; set; }
}
}
HelloController.cs
using HelloWorld.Models;
using System;
using System.Web.Mvc;
namespace HelloWorld.Controllers
{
public class HelloController : Controller
{
public ActionResult HelloView()
{
return View();
}
[HttpPost]
public ActionResult HelloView(Hello hl)
{
ModelState.Clear();
String work = hl.Str1;
hl.Str1 = hl.Str2 ;
hl.Str2 = work;
return View("HelloView2", hl);
}
}
}
HelloView.cshtml
@model HelloWorld.Models.Hello
@{
ViewBag.Title = "HelloView";
}
@using (Html.BeginForm())
{
<br />
@Html.TextBoxFor(a => a.Str1)
<h2>↓↑</h2>
@Html.TextBoxFor(a => a.Str2)
<input type="submit" />
}
HelloView2.cshtml
@model HelloWorld.Models.Hello
@{
ViewBag.Title = "HelloView2";
}
<h2>画面遷移しました</h2>
<br />
@Html.TextBoxFor(a => a.Str1)
@Html.TextBoxFor(a => a.Str2)
実行イメージ
↓ 送信ボタンを押下
return View("HelloView2");
別コントローラに画面遷移
別コントローラに画面遷移するときは、RedirectToActionでメソッド名、クラス名を指定します。HelloController.cs
using HelloWorld.Models;
using System;
using System.Web.Mvc;
namespace HelloWorld.Controllers
{
public class HelloController : Controller
{
public ActionResult HelloView()
{
return View();
}
[HttpPost]
public ActionResult HelloView(Hello hl)
{
ModelState.Clear();
String work = hl.Str1;
hl.Str1 = hl.Str2 ;
hl.Str2 = work;
return RedirectToAction("index", "Hello2");
}
}
}
Hello2Controller.cs
using System;
using System.Web.Mvc;
namespace HelloWorld.Controllers
{
public class Hello2Controller : Controller
{
// GET: Hello2
public String Index()
{
return "Hello World!!";
}
}
}
↓ 送信ボタンを押下
ページのトップへ戻る