Asp.net Mvc之Action如何傳多個參數


  最近,工作上有一個需要:用戶查詢日志文件信息,查看某一個具體日志信息,可能同時查看該日志所在日期的其他日志信息列表。

  為完成此功能,我打算在URL中傳入了兩個參數,一個記錄此日志時間,另外一個記錄日志的主鍵ID,因此,准備從Asp.net MVC的路由
入手。

  在Global.asax文件中,默認路由如下。

routes.MapRoute(
                "Default", // 路由名稱
                "{controller}/{action}/{id}", // 帶有參數的 URL
                new { controller = "Logon", action = "Logon", id = UrlParameter.Optional } // 參數默認值
            );

  這個路由中,在Action后面只能傳入一個參數,不能傳入多個參數,因此,需要增加路由信息。

  在Global文件中,新增了一個路由,路由名稱為“Default1",代碼如下

//第一種路由 傳兩個參數過去
routes.MapRoute("Default1",
"{controller}/{action}/{Parma1}/{Parma2}",
new { controller = "", action = "" },
new { });

  上述路由,可以傳入兩個參數。

   在此,我們建一個TestController,添加一個Test.cshtml頁面,在TestController寫下代碼,如下

public ActionResult Test(string date, string id)
{
ViewData["date"] = date;
ViewData["id"] = id;
return View();
}

  在Test.cshtml頁面中寫如下代碼

要查詢的日志時間為:@ViewData["date"]<br />
要查詢的日志ID為:@ViewData["id"]<br />

  運行編譯器,然后在瀏覽器中輸入 ”http://localhost:11507/Test/Test/2013-12-18/5“,頁面顯示如下

    要查詢的日志時間為:2013-12-18
    要查詢的日志ID為:5

  現在又有一個問題來了,需要傳入多個參數,怎么辦呢?當然,只有新添加新的路由”Default2"。代碼如下

//第二種路由 傳多個參數,只是獲得的第二個下划線后的所以數據
routes.MapRoute("Default2",
"{controller}/{action}/{*id}",
new { controller = "", action = "" }

);

  運行編譯器,然后在瀏覽器中輸入 ”http://localhost:11507/Test/Test/2013-12-18/5/xianrongbin“,頁面顯示如下

    要查詢的日志時間為:
    要查詢的日志ID為:2013-12-18/5/xianrongbin

  這里我們只能得到Action后面所有的參數,對此,我們可以解析出來,比如日志時間是 “2013-12-18",日志ID為”5“,日志操作者是”xianrongbin"。

  Ok,整個完成~~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM