我在锚标记中收到错误,我在其中调用controller(blog),action name(index)
。我希望我的网址看起来像博客/旅行/ 1。
这里'travels'是父名称,'1'是子id。我想从xslt调用一个关于父名和id的控制器。
这是我的.xslt页面:
<xsl:for-each select="Parent">
<div class="grid-col-3">
<ul>
<h4>
<a href='@Url.Action("Index","Blog", new{{@ParentName}/{current()/@Id}}'>
<xsl:value-of select="@ParentName"></xsl:value-of>
</a></h4>
<xsl:for-each select="/BlogCategories/BlogCategory[@ParentID = current()/@Id]">
<!--<xsl:if test="@ParentID=$Id">-->
<li class="lis">
<a href="{@Name}/{current()/@ID}">
<xsl:value-of select="@Name"></xsl:value-of>
</a>
</li>
<!--</xsl:if>-->
</xsl:for-each>
</ul>
</div>
</xsl:for-each>
我想打电话给这个博客控制器
public ActionResult addblogxml(string actiontype)
{
if(actiontype== "Submit")
{
var blog = _api.GetAllBlogCategory().ToList();
StreamWriter writer = new StreamWriter(Server.MapPath("~/XmlFiles/BlogCategory.xml"));
writer.WriteLine(@"<?xml version=""1.0"" encoding=""utf-8""?>");
writer.WriteLine(blog[0]);
writer.Close();
var xDocument = XDocument.Load(Server.MapPath("~/XmlFiles/BlogCategory.xml"));
string xml = xDocument.ToString();
ViewBag.BlogCategoryXML = xml;
}
return View("~/Areas/BMS/Views/CategoryBlog/addblogxml.cshtml");
}
答案 0 :(得分:0)
我认为实现您所需要的最佳方法是在RoutConfig.cs中进行更改。在RegisterRoutes
方法内,添加以下路由:
public static void RegisterRoutes(RouteCollection routes) {
routes.MapRoute(
name: "Blog",
url: "Blog/{parent}/{id}",
defaults: new { controller = "Blog", action = "Index", parent = UrlParameter.Optional, id = UrlParameter.Optional }
);
...
// Default/other routes below
}
然后你只需要使用:
<a href='@Url.Action("Index","Blog", new{ @parent = @ParentName, @id = @Id})'>
<xsl:value-of select="@ParentName"></xsl:value-of>
</a>