<ASP 控制器>与 ASP 片段不起作用,并在控制台中导致异常



我有餐厅菜单网站,我想从登录页面直接导航到菜单片段。当我将 url 粘贴到浏览器中时,这工作正常,但在单击链接后在控制台中导致异常:

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>

这也是我的"菜单"控制器:

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");
}
}

所有Nuget都是最新的。Bower.json: "引导": "3.3.7", "jquery": "^3.2.1", "jquery-validation": "^1.16.0", "jquery-validation-unobtrusive": "^3.2.6">

好吧,这不完全是一个解决方案,但我设法让它工作。我不是在链接到片段,而是链接到控制器中的另一个操作,该操作正在重定向到给定的 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));
}

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

感谢kkopieczek,因为这对我来说也是一个非常烦人的问题。 我对重定向语句确实有一点问题,但这作为另一种选择工作正常:

return Redirect(Url.RouteUrl(new { controller = "Home", action = "Index" }) + "#" + fragment);

相关内容

最新更新