大家好,我想問一下是否有一種方法可以在單擊 a 后重新加載單個部分,而不是加載整個站點。
我的網站看起來像這樣。

我的代碼
這就是我在訪問主站點時加載部分視圖的方式。
<div>
@{
await Html.RenderPartialAsync("_ArticlePositonsPartial",Model.ArticlePositions, ViewData);
}
</div>
部分模型
model IList<Rechnungen.Models.Position>
部分html
<form enctype="multipart/form-data">
<div class="tableFixHead">
<table class="table table-striped text-center table-sm " id="tablepost">
<thead class="table-dark ">
<tr>
<th style="width:72.5px" class="">Anzahl</th>
<th style="width:72.5px" class="">Einheit</th>
<th style="width:320px" class="">Nr Bezeichnung</th>
<th style="width:135px" class="">Stk Preis.</th>
<th style="width:135px" class="">Ges Preis.</th>
<th style="width:75px" class=""></th>
</tr>
</thead>
<tbody id="tablebodypost">
@foreach (var item in Model)
{
<tr id="">
<td style="width:72.5px" class="pt-2 ">
<span class="TBarticleAmount">@item.ArticleAmount</span>
</td>
<td style="width:72.5px" class="pt-2 ">
<span class="TBarticleType">@item.ArticleId</span>
</td>
<td style="width:320px; font-size:12px;" class="pt-2 ">
<span class="TBarticleNumberAndName">test</span>
</td>
<td style="width:135px" class="pt-2 ">
<span class="TBarticlePrice">test </span>
</td>
<td style="width:135px;" class="pt-2 ">
<span class="TBarticleAmountPrice"> test</span>
</td>
<td style="width:75px" class=" ">
<a class="btn btn-outline-dark btn-sm delete-record" data-id="1" data-toggleToolTip="tooltip" data-placement="top" title="Entfernen">
<i class="fa-solid fa-trash-can"></i>
</a>
</td>
</tr>
}
</tbody>
</table>
</div>
因此,在我單擊“Hinzufügen”按鈕后,我想向串列中添加一些內容并重新加載 tablePartial
<form mmethod="post" asp-page-handler="AddPosition">
<button class="btn btn-outline-secondary add-record" type="submit" data-added="0"><i class="fa-solid fa-plus"></i>Hinzufügen</button>
</form>
代碼隱藏中的方法:
public PartialViewResult OnPostAddPosition()
{
ArticlePositions.Add(new Position { ArticleAmount = 1, ArticleId = 2 });
return new PartialViewResult
{
ViewName = "_ArticlePositonsPartial",
ViewData = new ViewDataDictionary<IList<Position>>(ViewData, ArticlePositions),
};
}
呼叫 PostMethod 后,我的網站如下所示:

我已經在實習生中查找過它,但沒有發現任何對我有幫助的東西。有沒有辦法只重新加載 TablePartial?
uj5u.com熱心網友回復:
嘗試洗掉表單并使用按鈕呼叫js函式,并使用ajax呼叫處理程式,這是一個演示:
cshtml:
<div id="MyPartialView">
@{
await Html.RenderPartialAsync("_ArticlePositonsPartial", Model.ArticlePositions, ViewData);
}
</div>
@Html.AntiForgeryToken()
<button class="btn btn-outline-secondary add-record"data-added="0" onclick="GetPartialView()"><i class="fa-solid fa-plus"></i>Hinzufügen</button>
js:
function GetPartialView() {
$.ajax({
type: "POST",
url: '?handler=AddPosition',
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function (data) {
$("#MyPartialView").html(data);
},
error: function (result) {
alert("fail");
}
})
}
uj5u.com熱心網友回復:
我已經更改了代碼:
[BindProperty]
public List<Position> ArticlePositions { get; set; } = new List<Position>();
public PartialViewResult OnPostAddPosition([FromBody] List<Position> articlePositions)
{
Random myObject = new Random();
Random myObject1 = new Random();
articlePositions.Add(new Position
{
ArticleAmount = myObject1.Next(10, 100),
ArticleId = myObject.Next(10, 100)
});
var data = new NewInvoiceModel(_AddressRepository, _InvoiceNumberRangeRepository, _AddressTelephoneRepository, _ArticleRepository, _ITextsRepository, _HeaderDataRepository);
data.ArticlePositions = articlePositions;
var myViewData = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary()) { { "_ArticlePositonsPartial", articlePositions } };
myViewData.Model = data;
return new PartialViewResult
{
ViewName = "_ArticlePositonsPartial",
ViewData = myViewData,
};
}
HTML:`
<div id="MyPartialView">
@{
await Html.RenderPartialAsync("_ArticlePositonsPartial", Model, ViewData);
}
</div>`
Javascript:
function GetPartialView() {
var model = @Json.Serialize(Model.ArticlePositions);
$.ajax({
type: "POST",
url: '?handler=AddPosition',
data: JSON.stringify(model),
dataType: "html",
contentType: "application/json",
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
success: function(data) {
$("#MyPartialView").html(data);
},
error: function(result) {
alert("fail");
}
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/479119.html
