3
我只是在創建數據庫驅動的Web應用程序。爲了這個目的,我創建了一個控制器:如何重寫URL在MVC 5動態填充網頁
public class PagesController : Controller
{
private StoreDB db = new StoreDB();
public ActionResult LoadOneColumnPageContent(string pageId)
{
List<tbl_UserControl> tbl_UserControls = db.tbl_UserControl.Where(it => it.Active == true && it.PageId == pageId).OrderBy(it => it.Id).ToList();
return View(tbl_UserControls);
}
public ActionResult LoadFullWidthPageContent(int id)
{
List<tbl_UserControl> tbl_UserControls = db.tbl_UserControl.Where(it => it.Id == id).ToList();
return View(tbl_UserControls);
}
}
其中填充型
public partial class tbl_UserControl
{
private int? _priority;
[Key]
public int Id { get; set; }
[AllowHtml]
public string Title { get; set; }
[AllowHtml]
public string Subtitle { get; set; }
[AllowHtml]
[DataType(DataType.MultilineText)]
public string MainText { get; set; }
[StringLength(20)]
public string ButtonText { get; set; }
public string ImageUrl { get; set; }
public string UrlLink { get; set; }
public string PageId { get; set; }
public string TypeId { get; set; }
}
並在視圖顯示數據:
@using Microsoft.Ajax.Utilities
@model IEnumerable<newSiteMVC.Models.tbl_UserControl>
@{
ViewBag.Title = "LoadOneColumnPageContent";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@*<%--------------------- Top Banner with moving image ---------------------%>*@
@Html.Partial("~/Views/Pages/Shared/_PageTopBanner.cshtml", Model)
@*<%--------------------- Main page content ---------------------%>*@
@foreach (var item in Model.Where(it => it.TypeId != "NewsFeed" && it.PageId == @Request.QueryString["pageId"]))
{
if (item.TypeId != "TopBanner" && item.TypeId != "TwoColumn" && item.TypeId != "VideoPod")
{
if (string.IsNullOrEmpty(item.ImageUrl))
{
@Html.Partial("~/Views/Pages/Shared/_OneColumnComponent.cshtml", item)
}
else
{
@Html.Partial("~/Views/Pages/Shared/_OneColumnWithImageComponent.cshtml", item)
}
}
}
@if (@Request.QueryString["pageId"] == "InTheNews")
{
@Html.Partial("~/Views/Pages/Shared/_OneColumnWithLinkComponent.cshtml", Model)
}
@if (@Request.QueryString["pageId"] == "ContactUs")
{
@Html.Partial("~/Views/Pages/Shared/_FullWidthContactPage.cshtml", Model)
}
@if (@Request.QueryString["pageId"] == "ShoppingCart")
{
@Html.Partial("~/Views/Pages/Shared/_TwoColumnComponent.cshtml", Model)
}
@*<%--------------------- Moving Background Image ---------------------%>*@
@Html.Partial("_MovingBackgroundImage")
在這個非常時刻的Web應用程序顯示以下兩個URL模式:
http://localhost:63294/Pages/LoadFullWidthPageContent/54
或者
http://localhost:63294/Pages/LoadOneColumnPageContent?pageId=ContactUs
http://localhost:63294/Pages/LoadOneColumnPageContent?pageId=AboutUs
我想知道是否有什麼辦法可以讓URL更加SEO友好的,因爲考慮到所有頁面都通過相同的控制器和動作加載(不同的數據將顯示每個PAGEID)除了帳戶兩個頁面在同一個控制器中使用不同的操作。我想的鏈接,看起來像
www.somewebsite.com/News/54
www.somewebsite.com/ContactUs
www.somewebsite.com/AboutUs
它甚至有可能,如果這樣任何想法如何,我可以實現它?
這真是棒極了! :) – user3845868
只有最後一個參數可以被標記'UrlParameter.Optional' –