2016-03-11 26 views
-3

假設我有鏈接像www.mysite.com/Certificate/data/C001-P2003ASP.Net MVC:如何做提取和自動數據映射

我的控制器名稱是證書和動作名稱數據

public class CertificateController : Controller 
{ 
    public ActionResult Data(string certid,string studid) 
    { 
     return View(); 
    } 
} 

我想知道我需要開發哪些將提取id和分成兩部分用連字符分隔,並將兩個數據映射到數據操作。

C001將映射到certid,P2003將映射到studid。所以我需要概念如何做到這一點?

我需要開發任何操作過濾器嗎?

我是否需要編寫任何自定義值提供程序?

我需要編寫任何自定義模型聯編程序嗎?

我不想破壞行動中的數據,而是我想做出來的行動。所以建議我最好的想法。感謝

+0

爲什麼負分,而不是共享的理念與最好的辦法實現呢? – Thomas

+0

你不能改變網址來分割這個值嗎?如果它總是會被破折號分開,我將在動作中使用一個參數並將其分割成動作。 – Sousuke

+0

@Sousuke我不想更改網址,但我相信應該有一些方法來在請求到達操作方法之前拆分路由值。分割後,我們可以將值綁定到操作參數。 – Thomas

回答

0

創建您RouteConfig一個慣例,將映射你想要的路線。行動

routes.MapRoute(
    name: "CertificateData", 
    url: "Certificate/data/{certid}-{studid}", 
    defaults: new { controller = "Certificate", action = "Data"} 
); 

或啓用屬性路由和使用模板來匹配所需的URL

// GET Certificate/data/C001-P2003 
[Route("Certificate/data/{certid}-{studid}")] 
public ActionResult Data(string certid,string studid) {...}