簡體   English   中英

如何在ASP,NET MVC中利用用戶定義的url操作?

[英]How to utilize a user-defined url action in asp,net mvc?

我希望為最終用戶提供一種方法,讓他們輸入值“ SmallBuildingCompany”,然后使用該值創建將重定向到信息視圖的自定義URL。 例如,www.app.com / SmallBuildingCompany。 誰能指出一些有關此方面的信息?

到目前為止,我已編輯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");
}

您可以通過將URL的SmallBuildingCompany部分用作用於顯示每個信息視圖的操作的參數來實現此目的。

在Global.asax.cs中設置Route,以提取公司名稱作為參數並將其傳遞給CompanyInfoController的Index操作:

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

請注意,此路由可能會破壞默認路由( {controller}/{action}/{id} ),因此,您可能想給“ Info”路由加上前綴:

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

然后,CompanyInfoController Index操作可以使用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路由

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM