【发布时间】:2017-08-19 09:57:30
【问题描述】:
我正在为解析器构建一个 Web 应用程序。主页是一个带有基本控件的简单剃须刀视图,允许用户添加输入,稍后将显示解析结果。该主页的组件之一是 ViewComponent,它返回解析器功能的两个相关部分视图之一:允许用户添加输入的第一个视图和显示输出的结果视图。显示一个或另一个视图的决定将取决于一个布尔变量“已解析”,它将记录用户是否添加了输入并已解析。我们将主页面称为“Home”,输入视图称为“Main”,输出视图称为“Results”。如果用户添加输入并单击“Parse”按钮,“parsed”将为真,结果视图将加载。
我已经为此行为配置了逻辑和路由,如果我手动键入路由并添加可选参数,我可以毫无问题地对其进行测试。因此,例如,所有这些都可以正常工作:
- localhost:1111/ -> 显示 Main。
- localhost:1111/?parsed=false -> 显示 Main。
- localhost:1111/?parsed=true -> 显示结果。
- localhost:1111/parser/?parsed=false -> 显示 Main,依此类推。
那有什么问题呢?当我点击“解析”按钮时,我无法让系统检索到预期的 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。提前致谢。
【问题讨论】:
标签: asp.net asp.net-mvc razor asp.net-core-mvc