Я работаю над приложением ASP.NET Core 2.1 MVC, используя бритву. У меня есть searchQuery.cshtml и (индивидуально работающие) viewQuery.cshtml страницы. На моей странице searchQuery я позволил пользователю ввести queryId и, нажав кнопку «Поиск», я хочу запустить действие ViewQuery, которое отображает результаты в viewQuery.cshtml и отображает viewQuery под областью кнопки поиска.
Я не очень хорошо работаю с Ajax или около того. При поиске по клику я вызываю viewQuery Get action через ajax. При нажатии кнопки я передаю введенный queryId типа int. Но когда я загружаю страницу searchQuery, она выдает нулевое исключение для передачи queryId. Я искал несколько часов, но не нашел решения.
searchQuery.cshtml ОБНОВЛЕНО
<div>
<div class="col-md-6">
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.QueryId)
</dt>
<dd>
<input asp-for="QueryId" class="form-control" />
</dd>
</dl>
</div>
<input type="submit" value="Show" />
<!-- CHANGE IN CALL -->
<a href="#" class="btn btn-primary" onclick="ShowResult()">Search</a>
</div>
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="close" data-dismiss="modal">×</a>
<h3 class="modal-title">Query Answer</h3>
</div>
<div class="modal-body" id="myModalBodyDiv">
</div>
<div class="modal-footer">
<a href="#" class="btn btn-success" data-dismiss="modal">Ok</a>
</div>
</div>
</div>
</div>
<script>
function ShowResult() {
// Retrieve queryId
var queryId = $("#QueryId").val();
// DisplayS PROPERLY
alert("Entered ID " + queryId);
// TRIED '/query/viewQuery' ALSO
$.ajax({
type: 'GET',
url: '../query/viewQuery',
data: { queryId: queryId },
success: function (response) {
alert(response); // **DISPLAYS [Object: object]**
$("#myModalBodyDiv").html(response);
$('#myModal').modal("show");
}, error: function (response) {
alert("Error: " + response);
}
});
}
</script>
Мое действие ViewQuery в контроллере ОБНОВЛЕНО
[Route("[controller]/viewQuery/{queryId:int}")]
public async Task<IActionResult> ViewQuery(int queryId)
{
// Retrieve Data from api using HttpClient
....
return PartialView("ViewQuery", qVM); // PartialView(qVM); //View(qVM);
}
Действие поискового запроса ОБНОВЛЕНО
[Route("searchQuery")] // customer/searchQuery
public IActionResult SearchQuery()
{
return View();
}
Может кто-нибудь, пожалуйста, помогите мне, как мне достичь моей цели. Просто - текстовое поле, в которое пользователь вводит queryId. Нажатием кнопки хотите передать введенный queryId, вызвать действие GET на контроллере и получить ответ. Наконец покажите ответ под кнопкой поиска. Я просто пытался с вышеупомянутым модальным диалогом, я предпочитаю текст, а не диалог.