1. 程式人生 > 其它 >MVC-控制器之間的資料傳遞

MVC-控制器之間的資料傳遞

技術標籤:MVC學習html

MVC-控制器之間的資料傳遞


控制器之前的資料傳遞一般使用 TempData。下面以一個例子來展示:

前端程式設計

建立兩個控制器,Home控制器和Test控制器。
建立兩個Html頁面,一個位於Home資料夾下的Index.cshtml,一個位於Test資料夾下的Index.cshtml,程式碼如下:
Home下的:Index.cshtml,用來做資料提交。

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport"
content="width=device-width" />
<title>Index</title> </head> <body> <div> 這是Home控制器的檢視1。 @using (Html.BeginForm("Index","Home",FormMethod.Post)) { <p >姓名:@Html.TextBox("name", null)</
p
>
<p >年齡:@Html.TextBox("age", null)</p> <p><input type="submit" value="提交" /></p> } </div> </body> </html>

Test下的:Index.cshtml,用來做資料完成傳遞以後的展示。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" /> <title>Test控制器下的1號檢視</title> </head> <body> <div> 這是Test控制器的1號檢視。 <p>姓名:@ViewBag.person.Name</p> <p>年級:@ViewBag.person.Age</p> </div> </body> </html>

後臺程式碼設計

路由器的配置:

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

Home控制器程式碼:Home控制器中有兩個方法,程式通過路由配置進入執行Home/Index,進入初始頁面,資料通過表單提交以後通過類的封裝儲存在TempData中,然後跳轉到Test控制器下的Index頁面。

namespace TempDataDemo.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(string name,int? age)
        {
            //接受提交的資料
            Person person = new Person()
            {
                Name = name,
                Age = age,
            };
            TempData["person"] = person;
            return RedirectToAction("Index","Test");
        }
    }
}

Test控制器的程式碼:定義person實體類來取得儲存後的資料,然後通過ViewBag.person把從控制器Home獲取來的資料傳遞到Test控制器下的Index頁面顯示。

namespace TempDataDemo.Controllers
{
    public class TestController : Controller
    {
        // GET: Test
        public ActionResult Index()
        {
            Person person = (Person)TempData["person"];
            ViewBag.person = person;
            return View();
        }
    }
}

效果

初始頁面:

在這裡插入圖片描述提交後顯示的頁面:
在這裡插入圖片描述
資料通過TempData完成從控制器Home到控制器Test的傳遞,並且在test的html頁面上顯示資料。