如何在锚标记

时间:2016-08-01 06:27:06

标签: xml asp.net-mvc xslt

我在锚标记中收到错误,我在其中调用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");
    }

1 个答案:

答案 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>