我們遇到了下列的問題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
});
}
嗨伊馬德。隱藏輸入是錯誤的原因對我來說很清楚。看到我添加到我的問題的鏈接。我也明白爲什麼都發送到服務器。但我的問題是:爲什麼在URL中都可見。我認爲這是因爲Index是一個HttpGet。但我們不能發佈這種方法,因爲它是索引... 我會嘗試Request.QueryString [「ShowResolvedFailures」]。Contains(「True」),因爲我在其他地方看到了該解決方案。但我應該在哪裏使用這條線? –