2016-10-24 24 views
0

我希望爲最終用戶提供一種方法,讓他們輸入一個值'SmallBuildingCompany',然後使用該值創建一個自定義URL,將重定向到信息視圖。例如,www.app.com/SmallBuildingCompany。任何人都可以指點一些信息來幫助解決這個問題嗎?如何在asp,net mvc中使用用戶定義的url動作?

編輯161024 我迄今爲止嘗試:

我加入這個內RouteConfig。

 RouteTable.Routes.MapRoute(
     "Organization", 
     "O/{uniqueCompanyName}", 
     new { controller = "Organization", action = "Info" } 

並在組織控制器下添加了一個新的控制器方法和視圖。

public async Task<ActionResult> Info(string uniqueCompanyName) 
{ 
    var Org = db.Organizations.Where(u => u.uniqueCompanyName == uniqueCompanyName).FirstOrDefault(); 

    Organization organization = await db.Organizations.FindAsync(Org.OrgId); 

    return View("Info"); 
} 
+0

您已經嘗試了什麼? –

回答

0

可以通過使用URL作爲該用於顯示每一個信息圖的動作的參數的SmallBuildingCompany部分實現這一目標。

建立路由在Global.asax.cs中提取公司名稱,參數,並將其傳遞給CompanyInfoController的索引操作:

protected void Application_Start() { 
    // Sample URL: /SmallBuildingCompany 
    RouteTable.Routes.MapRoute(
     "CompanyInfo", 
     "{uniqueCompanyName}", 
     new { controller = "CompanyInfo", action = "Index" } 
    ); 
} 

注意這個路線可能會打破缺省路由({controller}/{action}/{id} ),所以也許你想你的前綴「信息」路線:

protected void Application_Start() { 
     // Sample URL: Info/SmallBuildingCompany 
     RouteTable.Routes.MapRoute(
      "CompanyInfo", 
      "Info/{uniqueCompanyName}", 
      new { controller = "CompanyInfo", action = "Index" } 
     ); 
    } 

然後CompanyInfoController索引操作可以使用uniqueCompanyName參數來從數據庫中檢索相關信息的。

public ActionResult Index(string uniqueCompanyName) { 
    var company = dbContext.Companies.Single(c => c.UniqueName == uniqueCompanyName); 
    var infoViewModel = new CompanyInfoViewModel { 
     UniqueName = company.UniqueName 
    } 
    return View("Index", infoViewModel); 
} 

ASP.NET Routing

+0

我添加了我認爲可能工作的內容,但頁面顯示爲未找到。我的目標是讓匿名用戶訪問這個重要的組織主頁。有任何想法嗎? – DudeThatCodes

+0

您可以使用http://nuget.org/packages/routedebugger來檢查哪些路由將被命中。 –

相關問題