ASP.NET MVCではログインを実現して元の画面に戻る
7139 ワード
フォームをコミットし、ユーザーがログインしていない場合はログインページにジャンプし、ログイン後、元のフォームにジャンプしてこのページをコミットし、フォームインタフェースのデータを保持する必要があります.
フォームをコミットするページは強力なタイプのビューページです.フォームインタフェースをコミットする必要があるデータを考慮しない場合は、まずこのようなモデルを設計します.
フォームをコミットするページは強力なタイプのビューページです.フォームインタフェースをコミットする必要があるデータを考慮しない場合は、まずこのようなモデルを設計します.
public class Student
{
public string Name{get;set;}
public string ReturnUrl{get;set;}
}
フォームを するビュー・ページには、 のように かれています.
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.Hidden("ReturnUrl", Request.Url.PathAndQuery)
@Html.TextBoxFor(m => m.Name)
<input type="submit" value=" "/>
}
コントローラには のように かれています.
public ActionResult Index()
{
return View(new Student());
}
[HttpPost]
public ActionResult Index(Student student)
{
return Redirect(student.ReturnUrl);
}
しかし,フォームコミットの いタイプのビューページに ったが,フォームデータは されなかった.
そこで、 のような い を えました.
return View("someview", somemodel);
someviewの はどうやって しますか?
public ActionResult Index()
{
return View(new Student());
}
、actionの を するとビューの を することに します!
Modelの :
public class Student
{
public string Name { get; set; }
public string ControllerName { get; set; }
public string ActionName { get; set; }
}
ルーティングからaction を し、StudentのActionNameプロパティに り てることができます.
public class HomeController : Controller
{
public ActionResult Index()
{
Student student = new Student()
{
ActionName = this.ControllerContext.RouteData.Values["action"].ToString(),
ControllerName = this.ControllerContext.RouteData.Values["controller"].ToString()
};
return View(student);
}
[HttpPost]
public ActionResult Index(Student student)
{
ViewBag.msg = " ~~";
// , ,
return View(student.ActionName, student);
}
}
、student.ActionName はaction でありview でもあります.
フォームを する いタイプのビュー・ページでは、 の を います.
@model MvcApplication1.Models.Student
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<div>@ViewBag.msg</div>
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.TextBoxFor(m => m.Name)
<input type="submit" value=" "/>
}
したがって、 で する に しては、ジャンプだけでは であり、あるビューにModelを す があるが、その は、1、ルーティングからaction を する2、action 、view が することである.