が、私は基本的に特定の地域のために、このように見えるようにURLを望んでいた(AdminArea課)ASP.NET MVC URLルーティングは、階層構造を持つ私は、ASP.NET MVCでいくつかのルーティングを実行しようとしてい
http://localhost/admin/folders/folder1/folder2
私は上記の構造を望んでいますが、私は解決できないいくつかの問題に取り組んでいます。
最初の問題は、時にはURLが
?私が欲しいものではありませんパーマリンク=フォルダ名
のようなクエリ文字列として終わるということです。
ここに私が定義したルートがあります。
context.MapRoute
(
"folder_route",
"Administration/folders/{*permalink}",
defaults: new { controller = "folders", action = "Index",permalink = UrlParameter.Optional },
constraints: new { permalink = new FolderURLConstraint() }
);
制約:
public class FolderURLConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (values[parameterName] != null)
{
var permalink = values[parameterName].ToString();
return new FolderDAL().ValidateFolderURLSlug(permalink);
}
return false;
}
}
検証:
public bool ValidateFolderURLSlug(string folderName)
{
if (!string.IsNullOrEmpty(folderName))
{
string[] splitFolder = folderName.Split(new string[] { "/"}, StringSplitOptions.RemoveEmptyEntries);
string lastValue = splitFolder[splitFolder.Length - 1];
string[] folderNames = GetFolderBreadCrumb(lastValue.ToLower()).Select(p => p.FolderName.ToLower()).ToArray();;
splitFolder = splitFolder.Select(s => s.ToLower()).ToArray();
bool isEqual = Enumerable.SequenceEqual(splitFolder, folderNames);
return isEqual;
}
return false;
}
インデックスページ:grid.GetHtml @ (tableStyle:「表table-接さテーブル凝縮テーブルのストライプ"、
columns:grid.Columns(
grid.Column("FolderName", "Folder Name",
format:(item) => Html.ActionLink((string)item.FolderName, "index", "folders", new {permalink=item.FolderName}, null)),
grid.Column("DateCreated", "Date Created"),
grid.Column(header:"Action", format:
@<text>
<a href="@Url.Action("delete", "Folders", new {id=item.PrimaryKey })"><span class="fa fa-trash"></span></a>
<a href="@Url.Action("edit", "Folders", new {id=item.PrimaryKey })"><span class="fa fa-edit"></span></a>
</text>)
)
)
URLを生成するには、/ folder1/folder2のようなURLを生成したいと思います。たとえば、ページフォルダをクリックすると、/ページのようなURLが表示されますが、ページのホームフォルダをクリックすると、 /ページ/家庭のようなURLを取得する
私はそれを得ることができませんまた、何らかの理由で、最初の階層のドロップ後にクエリ文字列を追加するようです。メインページ(/フォルダ/)のよう
あなたがページ内の
/ページ/
が、フォルダに移動したいフォルダをクリックします(自宅を言うことができます)
ます/ foldersのようなリンクがありますか?permalink =ホーム
私は/ pages/homeと入力しても、これは動作します。
ご協力いただければ幸いです。