Daļēja skata izmantošana, lai klienta pusē asinhroni ielādētu daļēju HTML

Lapa atjaunota :
Lapas izveides datums :

Vides

Visual Studio
  • Visual Studio 2019 Visual Studio 2019
ASP.NET Core
  • 3.1

Par dinamisku HTML elementu pievienošanu

Dinamiski pievienojot HTML elementus, parasti tos pievieno, piemēram, Javascript. Tā kā ar to rīkojas neatkarīgi no Web servera puses, iespējams, tā ir jāpārvalda divreiz, piemēram, atribūtu vērtības.

ASP.NET Core izmanto daļējs skats. Varat izgūt HTML ar servera apstrādi, kas pievienota daļējam HTML (.cshtml), kas definēts servera pusē. Klienta pusē šis HTML tiek izgūts un elements tiek pievienots norādītajai atrašanās vietai.

Kas ir paraugā?

Definē <ul><li> kā daļēju skatu sarakstu.

Servera daļēja daļa parāda daļēju skatu, kas definēts index.cstml. Tādēļ tas tiek izvērsts, kad skats tiek saņemts no servera.

Daļa no klienta load Ajax daļēja ir T:System.Web.HTML kontrole tūlīt pēc tam, kad klients izgūst HTML un parāda to uz ekrāna. Izgūst un parāda daļēju skatu no servera Javascript.

Poga Ajax Daļēja tiek izmantota, kad nospiežat pogu. Izgūst un parāda daļēju skatu no servera Javascript. Process ir tāds pats kā ielādēt. Tas arī apraksta kļūdu apstrādi, ja to nav iespējams ielādēt vienu reizi.

Kontrolieri (HomeController.cs)

Definē darbības daļējiem skatiem, kas jāielādē ielādes laikā, un daļējus skatus, kas jāielādē, nospiežot pogu.

Lai atgrieztu daļēju PartialView skatu, izsauciet metodi un atgriezieties. Jūs varat arī saistīt modeli ar PartialView, List<string> tāpēc mēs esam saistoši šeit. Var definēt, kuri tipi skata pusē faktiski ir saistīti, kas ir tieši tāds pats kā Razor sintakse, piemēram, index.cstml.

Skata nosaukuma norādīšana ir tāda pati kā citām skata funkcijām.

public class HomeController : Controller
{
  // :
  // :

  public IActionResult PartialLoad()
  {
    var list = new List<string>() { "Load1", "Load2", "Load3" };

    // PartialView を呼ぶこと
    return PartialView("Partial", list);
  }

  public IActionResult PartialButton()
  {
    var list = new List<string>() { "Button1", "Button2", "Button3" };

    // PartialView を呼ぶこと
    return PartialView("Partial", list);
  }
}

Daļēja View (Views / Home / Partial.cshtml)

Definējiet daļēju skatu daļējā skatā daļējā cshtml. Saturs ir tikai saraksts ar saistītām virknēm, li kas sakārtotas pēc taga. Tas ir tieši tāds pats kā normāls skats, tāpēc nav īpaši uzmanīgi. Jo tas ir Razor sintakse, tas ir arī iespējams iegult kodu C

Daļēja skata faila nosaukumu un mapju hierarhiju var novietot jebkurā vietā saskaņā ar skata līdzinājuma likumu.

@model List<string>

<ul>
  @foreach (var item in Model)
  {
    <li>@item</li>
  }
</ul>

Skati (HTML) (Views/Home/index.cstml)

Lai gan tā ir definīcija HTML pusē, ir dažas vietas, lai izskaidrotu, jo displeja daļa būtībā ir vairākums.

Servera daļējas daļas daļai varat norādīt partial tagu . Varat izvērst norādīto daļējo skatu. name Norādiet skata nosaukumu un model norādiet saistījuma parametrus programmai . Tas ir līdzīgs PartialView metodi kontrollera pusē. Starp citu, tas ir servera puses izvietošanas process, tāpēc klients jau ir izvietots, kad tas saņem HTML.

Client Load Ajax Button Ajax Partial Daļēja un poga Ajax Daļēja izvietot asinhroni izgūt daļēju viedokli div tagus. Pogas pusē mēs esam likuši pogu, kas norāda pogu, kuru var veiksmīgi izgūt, un darbību, kas nepastāv ar nolūku.

<h3>Server Partial</h3>
<p>
  リクエスト後のレスポンス HTML 時点で部分ビューが展開されている。
</p>
<partial name="Partial" model="@(new List<string>() { "Server1", "Server2", "Server3" })" />

<h3>Client Load Ajax Partial</h3>
<p>
  画面表示後に自動的にビューが読み込まれる。<br />
  Web ブラウザのデバッガのブレークポイントでスクリプトの処理を止めれば
  表示のタイミングでは読み込まれていないことは確認できる。
</p>
<div id="load_area">読み込み中…。</div>

<h3>Button Ajax Partial</h3>
<p>ボタンを押すとビューが読み込まれる</p>
<button type="button" id="button1" class="btn btn-primary">Partial View 読み込み (正常)</button>
<button type="button" id="button2" class="btn btn-danger">Partial View 読み込み (エラー)</button>
<div id="message"></div>
<div id="button_area"></div>

Skati (Javascript) (Skati/Sākums/indekss.cstml)

Javascript apraksta, ko darīt pēc sākotnējā displeja un ko darīt, kad poga ir nospiesta.

Izsauciet funkciju jQuery objektu un load izsauciet metodi M:System.Data.DataQuery.GetQuery(System.Object). Daļēju skatu var iegūt asinhroni, kā pirmo argumentu norādot mērķa darbību (URL). Ja izgūtais saturs ir HTML, to var iegult kā HTML iekšpusē jQuery objektu.

Otrais arguments var būt atzvanīšanas funkcija, kas ļauj atsaukties uz izgūto statusu utt. Ir iespējams zarot atkarībā no tā, vai iegūtais rezultāts ir normāls vai kļūda.

Šo funkciju var aizstāt ar funkciju vai funkciju, bet load get tas nedaudz ajax vairāk.

$(document).ready(function () {

  // 画面表示後のタイミングで読み込む
  $("#load_area").load("/Home/PartialLoad");

  // ボタンを押したときに読み込む
  $("#button1").click(function () {
    // 存在するアクションを指定
    loadPartialView('/Home/PartialButton');
  });
  $("#button2").click(function () {
    // 存在しないアクションを指定
    loadPartialView('/Home/PartialButton_xxxxxxxx');
  });
});

// 指定したパスの partial view を読み込む
function loadPartialView(loadPath) {
  $("#button_area").text('読み込み中…。');
  $("#button_area").load(loadPath, function (response, status, xhr) {
  // status === 'error' ならエラーと判断
  if (status === 'error') {
    $('#message').text('エラー (status : ' + xhr.status + ', statusText : ' + xhr.statusText + ')');
  } else {
    $('#message').text('正常 (status : ' + xhr.status + ', statusText : ' + xhr.statusText + ')');
  }
});