Frage Was sind @section-Skripte und wofür wird es verwendet?


Ich habe ein Chat-Beispiel von der Microsoft-Website heruntergeladen. Ich habe mehrere Tutorials verfolgt, aber ich habe noch nie das @ section-Skript {} gesehen, bevor ich Skripte ohne diesen Block von c # -Code (@section script {}) gemacht habe und es scheint gut zu funktionieren, aber in dieser Instanz der Chat-Anwendung signalisieren, wenn ich die Skripte außerhalb des Blocks nehme, funktioniert es nicht.

@section scripts {
<!--Script references. -->
<!--The jQuery library is required and is referenced by default in _Layout.cshtml. -->
<!--Reference the SignalR library. -->
<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="~/signalr/hubs"></script>
<!--SignalR script to update the chat page and send messages.-->
<script>
    $(function () {
        // Reference the auto-generated proxy for the hub.
        var chat = $.connection.chatHub;
        // Create a function that the hub can call back to display messages.
        chat.client.addNewMessageToPage = function (name, message) {
            // Add the message to the page.
            $('#discussion').append('<li><strong>' + htmlEncode(name)
                + '</strong>: ' + htmlEncode(message) + '</li>');
        };
        // Get the user name and store it to prepend to messages.
        $('#displayname').val(prompt('Enter your name:', ''));
        // Set initial focus to message input box.
        $('#message').focus();
        // Start the connection.
        $.connection.hub.start().done(function () {
            $('#sendmessage').click(function () {
                // Call the Send method on the hub.
                chat.server.send($('#displayname').val(), $('#message').val());
                // Clear text box and reset focus for next comment.
                $('#message').val('').focus();
            });
        });
    });
    // This optional function html-encodes messages for display in the page.
    function htmlEncode(value) {
        var encodedValue = $('<div />').text(value).html();
        return encodedValue;
    }
</script>
}

12
2018-06-09 13:54


Ursprung


Antworten:


EIN section ermöglicht es Ihnen, etwas in einer Ansicht hinzuzufügen, die im Layout hinzugefügt wird. dh: -

Aussicht

@section scripts {

    <script>

      alert('foo');

    </script>

}

Layout

@RenderSection("scripts", false)

jetzt dieser Name section  Skripte wird gerendert, wo Sie im Layout angegeben haben.

@RenderSection hat auch 2 Unterschriften: -

public HelperResult RenderSection(string name) // section required in the view
public HelperResult RenderSection(string name, bool required)

27
2018-06-09 14:30



Wenn Sie ein definieren @section Irgendwo, sagen wir mal _Layout.cshmtl Datei ermöglicht es allen Ihren Ansichten, Skriptdateien oder CSS-Dateien oder was auch immer in Orte auf der definierenden Seite einzufügen.

Dies ist sehr nützlich, wenn Sie beispielsweise das jQuery UI Datepicker-Steuerelement nur für einige Ansichten auf Ihrer Site verwenden. Daher möchten Sie möglicherweise die jQuery UI Datepicker-Skriptdatei nicht global in Ihren einschließen _Layout.cshtml da Sie es nur auf 2 oder 3 Seiten benötigen.

@section ermöglicht Ihnen, diese Dateien nur für bestimmte Ansichten einzuschließen. Es ist notwendig, da eine Ansicht nicht leicht den Inhalt der ändern kann _Layout.cshtml Andernfalls.

Sie können auch die @section B. für JavaScript-Dateien oder im oberen Bereich des Layouts für CSS-Dateien. Sie können damit auch eine in HTML erstellte Seitenleiste nur in bestimmten Ansichten verwenden.

Beachten Sie jedoch, dass Teilansichten nicht in der Lage sind, die @section Element standardmäßig.


8
2018-06-09 14:32