我正在为解析器构建一个Web应用程序。主页是一个简单的剃刀视图,带有基本控件,允许用户添加输入,稍后将显示解析的结果。此主页面的一个组件是ViewComponent,它返回解析器功能的两个相关部分视图之一:第一个允许用户添加输入的视图,以及一个显示输出的结果视图。显示一个或另一个视图的决定将取决于bool变量“解析”,该变量将记录用户是否添加了输入并进行了解析。我们将主页面调为“Home”,输入视图为“Main”,输出视图为“Results”。如果用户添加输入并单击“Parse”按钮,则“parsed”将为true,并且将加载Results视图。
我已为此行为配置了逻辑和路由,如果我手动键入路由,添加可选参数,我可以毫无问题地进行测试。因此,例如,所有这些都正常工作:
那么问题是什么?当我点击“Parse”按钮时,我无法让系统检索到预期的url localhost:1111 /?parsed = true,而是获取localhost:1111 /?。从this tutorial(以及我读过的更多内容)我明白我需要使用 asp-route- [parameter] ,并且必须匹配方法的签名。在 asp-action 中调用,但我无法使其工作。
这是有问题的按钮:
<div class="col-2">
<form>
<button class="button"
asp-controller="Home" asp-action="Index"
asp-route-parsed="true">
Start Parsing
</button>
</form>
</div>
这是它所称的方法:
[Route("parser/{parsed:bool?}")]
[Route("/{parsed:bool?}")]
[Route("")]
public ViewResult Index(bool parsed = false) {
ViewData["Title"] = "Home";
if (parsed == true) {
Helper.parsed = true;
} else {
Helper.parsed = false;
}
return View("Index", Helper);
}
我真的很感激这里的一些方向,我已经阅读了几篇文章和文档,但看不出问题出在哪里。在任何人都想看看整个系统the code is available here。提前致谢。
答案 0 :(得分:0)
您不需要表单来重定向到某个操作。使用简单的链接,如:
<div class="col-2">
<a class="button"
asp-controller="Home" asp-action="Index"
asp-route-parsed="true">
Start Parsing
</a>
</div>
同时删除方法中的所有[Route]
元素将生成所需的链接。