Вы можете использовать return PartialView()
для отображения другой страницы, когда первая страница была правильно отправлена. Обратите внимание, что тип input
должен быть button
, а не submit
.
Вот простой обходной путь, подобный приведенному ниже:
1.Модель:
public class NameInfo
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string StreetName { get; set; }
public int ApartmentNumber { get; set; }
}
2._partialNameInfo.cshtml:
<form id="nameinfo">
<input type="text" id="firstname" />
<input type="text" id="lastname" />
<input type="button" onclick="checknames()" value="Submit" />
3._partialAddressInfo.cshtml:
@model Address
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.StreetName)
</th>
<th>
@Html.DisplayNameFor(model => model.ApartmentNumber)
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
@Html.DisplayFor(model => model.StreetName)
</td>
<td>
@Html.DisplayFor(model => model.ApartmentNumber)
</td>
</tr>
</tbody>
</table>
4.Index.cshtml:
<div id="partial1">
@await Html.PartialAsync("_partialNameInfo")
</div>
<div id="partial2">
</div>
@section Scripts{
<script>
function checknames() {
var flag;
var firstname = $("#firstname").val();
var lastname = $("#lastname").val();
var data = { firstname, lastname };
$.ajax({
url: "/Home/Test",
type: "POST",
data :data,
dataType: 'html',
success: function (result) {
$("#partial2").html(result);
}
})
}
</script>
}
5.Контроллер:
public IActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Test(NameInfo nameInfo)
{
var model = new List<NameInfo>()
{
new NameInfo(){ Id=1,FirstName="a",LastName="b",Address=new Address(){ StreetName="aa",ApartmentNumber=1001} },
new NameInfo(){ Id=2,FirstName="c",LastName="d",Address=new Address(){ StreetName="bb",ApartmentNumber=1002} }
};
var data = model.Where(m => m.FirstName == nameInfo.FirstName).Where(m => m.LastName == nameInfo.LastName).Select(m => m.Address).FirstOrDefault();
return PartialView("_partialAddressInfo",data);
}
6.Результат: ![enter image description here](https://i.stack.imgur.com/zZCos.gif)