2016-08-01 42 views
0

我在錨點標記中遇到錯誤,我將其稱爲controller(blog),action name(index)。我希望我的網址看起來像blog/travels/1。 這裏'travels'是父母的名字,'1'是孩子的id。我想從xslt調用一個關於父母姓名和id的控制器。如何從xslt調用錨點標記中的控制器

這是我的.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

表達式外部的屬性值模板'@ Url.Action(「Index」,「Blog」,new {{ParentName}/{current()/ @ Id}}'中的右大括號必須加倍。 –

+0

It可能剛剛在複製時出錯,但是您錯過了右括號:'href ='@ Url.Action(「Index」,「Blog」,new {{ParentName}/{current()/ @ Id} }''應該是'href ='@ Url.Action(「Index」,「Blog」,新{{@ ParentName}/{current()/ @ Id}})'' –

回答

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> 
+0

嘿,我做同樣的事情,告訴我,但它得到錯誤作爲預期的令牌'}',發現',' –

+0

你在哪裏得到那個錯誤?在路由配置或''標記? –