簡體   English   中英

asp.net mvc 4自定義URL的操作方法

[英]asp.net mvc 4 custom urls for action method

我正在創建一個ASP.NET MVC 4應用程序

public class AspNetController : Controller
{
    //
    // GET: /AspNet/
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Introduction()
    {
        return View();
    }
}

如上圖所示,有AspNet控制器和介紹動作方法

導入操作方法的默認網址為

本地主機:55134 / ASPNET /導入

但我想像

本地主機:55134 / ASPNET /引入到ASPNET

/ localhost:55134 / aspnet / NetFrameWork相同

/localhost:55134/aspnet/What-is-.Net-Framework

怎么做

您應該能夠使用ActionName屬性來裝飾您的路線。

[ActionName("Introduction-To-AspNet")]
public ActionResult Introduction()
{
    return View();
}

您確實想使用AttributeRouting,或者通過第3方程序包使用,也可以通過本機使用。

從技術上講,此概念屬於ASP.NET MVC中的“ 路由”

為此,您需要在RegisterRoutes(RouteCollection routes)下的App_Start->RouteConfig.cs文件中為路由輸入一個條目

例如:

routes.MapRoute(
    "customRouteName", 
    "aspnet/introduction-To-AspNet", 
    new { controller = "AspNet", action = "Introduction" });

在這里, aspnet / introduction-To-AspNet將附加在您的基本URL之后,即localhost:55134 /

快速而骯臟的答案是將路由添加到您的〜/ AppStart / RouteConfig.cs文件,它將得到照顧:

routes.MapRoute(
    name: "CustomRoute",
    url: "Aspnet/Introduction-To-AspNet",
    defaults: new { controller = "Home", action = "AspNet", id = UrlParameter.Optional }
);

但是,我假設這是針對某種類型的博客的? 我建議您有一個稱為view的操作方法,然后將您的名稱用作文章的參數。 這樣,您不必在每次添加新文章或其他內容時都去編輯代碼:

public class ArticlesController : Controller
{
    public ActionResult ViewArticle(string? title)
    {
        ViewBag.Article = title;
        return View();
    }
}

這樣,您的URL將是www.yoursite.com/Articles/ViewArticle/Introduction-To-AspNet。 通常,如果可以避免的話,您就不想在路由配置中添加大量的特定路由。 話雖如此,如果這是一個遺留系統,則路由表可能是唯一的方法。

編輯

好的,所以您可以做的是將字符串傳遞到ViewBag並使用case語句確定要顯示的局部視圖(我認為這可能是您的理想解決方案):

<!--cshtml view-->
@switch(ViewBag.Article)
{
    case 'Introduction-To-AspNet':
        @Html.Partial('pathToPartialView.cshtml')
        break;
    case 'Some-Other-Article'
        @Html.Partial('pathToAnotherPartialView.cshtml')
        break;
    ...
    ...
    default:
        @Html.Partial('invalidArticleName.cshtml')
        break;
}

控制器將通過ViewBag傳遞商品名稱,然后您可以使用case語句找出要渲染的商品...,當然,您一直在尋找真正的秘密: @Html.Partial('URL') -如果您將其放在頁面中,這將使您的部分內容正確呈現。 您也可以像FYI一樣傳遞對象。

另外,請確保對switch語句具有默認操作,該操作將顯示某種404頁面,該頁面指示URL中的名稱無效。 您總是想在從URL接收用戶輸入的任何時候都擁有此功能,因為人們總是無休止地使用URL(更無辜的是,始終復制/粘貼錯誤/不完全錯誤)

暫無
暫無

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

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