【发布时间】:2016-11-23 15:32:32
【问题描述】:
我们遇到了以下问题: 如果我们的复选框被选中,我们的 url 中有两个相同的参数:
http://localhost:63978/Failure?ShowResolvedFailures=true&ShowResolvedFailures=false
我们几乎可以肯定这与复选框中的隐藏参数有关(参见:asp.net mvc: why is Html.CheckBox generating an additional hidden input)
第一个“ShowResolvedFailures”将是由于选中复选框而生成的值。 第二个“ShowResolvedFailures”来自我们期望的隐藏属性
但是我们如何从我们的 url 中删除该参数。当然我们不希望在我们的 URL 中看到隐藏的参数。
这是我们的代码:
cshtml:
<form asp-controller="Failure" asp-action="Index" method="GET" role="form" id="searchForm" asp-antiforgery="false">
<div class="pull-right">
<span>
Toon opgeloste storingen?
<input asp-for="@Model.ShowResolvedFailures"
type="checkbox"
class="customCheckbox"
onclick="this.form.submit();">
</span>
</div>
controller.cs:
[HttpGet]
public async Task<IActionResult> Index([FromQuery] FailureIndexViewModel requestModel)
{
var showResolvedFailures = requestModel?.ShowResolvedFailures ?? false;
var searchQuery = new FailureSearchQuery
{
CorrelationId = requestModel?.CorrelationId,
CommandId = requestModel?.CommandId,
ShowResolvedFailures = showResolvedFailures
};
var urlWithQueryString = QueryHelpers.AddQueryString(@"api/tool/failures/search", searchQuery.GetQueryParameters());
var failureOverviewModel = await GetDataAsync<FailureOverviewModel>(urlWithQueryString);
return View("Index", new FailureIndexViewModel
{
CorrelationId = requestModel?.CorrelationId,
CommandId = requestModel?.CommandId,
ShowResolvedFailures = showResolvedFailures
});
}
【问题讨论】:
标签: c# asp.net asp.net-mvc checkbox