2017-07-08 68 views
0

我有餐馆菜单网站,我想直接导航到登陆页面的菜单片段。<a asp-controller> with asp-fragment does not work and cause exception in console

SCRIPT5022: Syntax error, unrecognized expression: /Menu#Drinks 
    jquery.js (1580,2) 

这里是我试过的代码:

<a asp-controller="Menu" asp-fragment="Drinks">Drinks</a> 
    <a href="/Menu#Drinks">Drinks 2</a> 
    <a href="http://localhost:64749/Menu#Drinks">Drinks 3</a> 

而且这是我的“菜单”控制器,当我的URL粘贴到浏览器中,但会导致异常在控制台我点击链接后也能正常工作:

public class MenuController : Controller 
{   
    private readonly MenuService _menuSrvc; 

    public MenuController(MenuService menuSrvc) 
    { 
     _menuSrvc = menuSrvc; 
    } 

    public IActionResult Index() 
    { 
     ViewData.Model = new MenuViewModel() 
     { 
      MenuCategories = _menuSrvc.GetMenu(), 
     }; 

     return View("~/Views/Menu/Menu.cshtml"); 
    } 
} 

所有nugets都是最新的。 Bower.json: “bootstrap”:“3.3.7”, “jquery”:“^ 3.2.1”, “jquery-validation”:“^ 1.16.0”, “jquery-validation-unobtrusive”: “^ 3.2.6”

回答

0

那么它不是完全的解决方案,但我设法让它工作。我没有链接到片段,而是到控制器中的另一个动作,它正在重定向到给定的URL。

<a asp-controller="Menu" asp-action="RedirectToFragment" asp-route-fragment="Pizza"> 
     ...view more 
</a> 

public IActionResult RedirectToFragment(string fragment) 
{ 
    return Redirect(string.Concat(@"\Menu#", fragment)); 
} 

把它留在这里...也许有人会在未来找到适当的解决方案。