मैं ब्लेज़र में "सर्वर से फिर से कनेक्ट नहीं कर सकता" टेक्स्ट को कैसे बदल सकता हूं?


10

मैं Blazor सर्वर-साइड का उपयोग कर रहा हूं।

जब Blazor App रिमोट सर्वर से डिस्कनेक्ट होता है, तो यह इसे दिखाएगा:

यहां छवि विवरण दर्ज करें

मैं ऊपर की छवि का पाठ बदलना चाहता हूं ('सर्वर से पुन: कनेक्ट नहीं हो सका ...' और इसी तरह)।

मैं इसे हमारे देश की भाषा में बदलना चाहता हूं।

मुझे प्रोजेक्ट की फाइल मिली लेकिन इस बारे में कुछ नहीं मिला।

मैं इसे बदलने में किस तरह सक्षम हूं? धन्यवाद।

जवाबों:


14

Blazor ऐप यह जांच करेगा कि क्या पेज में id के साथ html तत्व है{dialogId} :

  1. यदि ऐसा कोई तत्व मौजूद नहीं है, तो यह संदेश प्रदर्शित करने के लिए डिफ़ॉल्ट हैंडलर का उपयोग करेगा।
  2. यदि यह तत्व मौजूद है, तो यह तत्व है class होगा:
    • के रूप में सेट करें components-reconnect-showसर्वर से पुन: कनेक्ट करने का प्रयास करते समय करें,
    • के रूप में सेट करें components-reconnect-failedसर्वर से कनेक्ट करने में विफल होने पर करें।
    • जैसे components-reconnect-refusedकि सर्वर सर्वर तक पहुंचता है वैसे ही सेट करें जब सर्वर कनेक्शन को सक्रिय रूप से खारिज कर देता है

डिफ़ॉल्ट रूप से, dialogIdहै components-reconnect-modal। इसलिए आप पृष्ठ में एक तत्व बना सकते हैं और अपनी इच्छानुसार सामग्री और शैलियों को नियंत्रित करने के लिए CSS का उपयोग कर सकते हैं।

डेमो:

उदाहरण के लिए, मैं प्रदर्शित करने के लिए सामग्री के तीन भाग बनाता हूं Pages/_Host.cshtml:

<div id="components-reconnect-modal" class="my-reconnect-modal components-reconnect-hide">
    <div class="show">
        <p>
            This is the message when attempting to connect to server
        </p>
    </div>
    <div class="failed">
        <p>
            This is the custom message when failing 
        </p>
    </div>
    <div class="refused">
        <p>
            This is the custom message when refused
        </p>
    </div>
</div>

<app>
    @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>

<script src="_framework/blazor.server.js"></script>

और फिर शैली को नियंत्रित करने के लिए कुछ CSS जोड़ते हैं:

<style>
    .my-reconnect-modal > div{
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 1000;
        overflow: hidden;
        background-color: #fff;
        opacity: 0.8;
        text-align: center;
        font-weight: bold;
    }
    .components-reconnect-hide > div
    {
        display: none;
    }

    .components-reconnect-show > div
    {
        display: none;
    }
    .components-reconnect-show > .show
    {
        display: block;
    }

    .components-reconnect-failed > div
    {
        display: none;
    }
    .components-reconnect-failed > .failed
    {
        display: block;
    }

    .components-reconnect-refused >div
    {
        display: none;
    }
    .components-reconnect-refused > .refused
    {
        display: block;
    }
</style>

अंत में, हमें कनेक्ट करने का प्रयास करते समय या कनेक्ट करने में विफल होने पर निम्न संदेश मिलेगा:

यहां छवि विवरण दर्ज करें


यह अच्छी जानकारी है, लेकिन Microsoft डॉक्स पर इसका कोई दस्तावेज कहां है?
आरोन हुडोन


धन्यवाद। अजीब बात है कि उन्होंने इसे होस्ट करने वाले मॉडल के
हारून हडोन

@AaronHudon क्योंकि यह केवल तब होता है जब हम Blazor Server साइड मॉडल का उपयोग करते हैं :)
itminus

1
ऐसा प्रतीत होता है कि यह जानकारी यहां स्थानांतरित हो गई है
drs9222

9

चीजों के जावास्क्रिप्ट पक्ष के लिए ब्लेज़र एक छोटे से एपीआई को उजागर करता है window.Blazor वस्तु के ।

इस एपीआई का एक हिस्सा है defaultReconnectionHandler जो आपको पुनरावर्तन अनुभव को अनुकूलित करने की अनुमति देता जिसमें रिट्रीस आदि की संख्या के लिए अलग-अलग विकल्प सेट करना शामिल है।

हालाँकि, यह केवल प्रदर्शित करने के लिए तर्क को स्वैप करना भी संभव है ReconnectionDisplay

एक साधारण इम्प्लांटेशन इस तरह दिखता है और आपको इस प्रक्रिया पर नियंत्रण पाने में सक्षम बनाता है:

function createOwnDisplay() {
    return {
        show: () => { alert("put code that shows a toast , ui, or whaterver here"); },
        hide: () => { console.log('foo'); },
        failed: () => { console.log('foo'); },
        rejected: () => { console.log('foo'); }
    };
}

Blazor.defaultReconnectionHandler._reconnectionDisplay = createOwnDisplay();

खैर, यह इसे भी हल करने का एक तरीका है। लेकिन मुझे @itminus का तरीका ज्यादा पसंद है। आप सब का धन्यवाद।
मेलॉन एनजी

ज़रूर, यह आपके उपयोग के मामले पर निर्भर करता है। यदि आपको अधिक नियंत्रण की आवश्यकता है (जैसे कनेक्शन विफल होने पर कस्टम कोड निष्पादित करें) एपीआई का उपयोग करने का तरीका है। अगर आप यूआई को स्वैप करना चाहते हैं तो आप @itminus सुझाव के साथ जा सकते हैं।
Postlagerkarte
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.