Вызов функции javascript в другом каталоге из razorpage - PullRequest
0 голосов
/ 04 июля 2019

Я не могу включить файл javascript в свой проект razorpages. Я хочу иметь возможность вызывать функции из него, но даже оповещение не работает.

Я включил app.UseStaticFiles (); в startup.cs

Мой HTML это:

@page
@model OptimalHousing.Pages.IndexModel

@{
    ViewData["Title"] = "Index";
}

    <head>
        <script type="text/javascript" src="~/js/site.js"></script>
    </head>
<h1>Index</h1>

<p>
    <a asp-page="Create">Create New</a>
</p>
<table class="table">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Dorm[0].dormName)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Dorm[0].dormUrl)
            </th>
            <th></th>
        </tr>

    </thead>
    <tbody>
        @foreach (var item in Model.Dorm)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.dormName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.dormUrl)
                </td>
                <td>
                    <a asp-page="./Edit" asp-route-id="@item.id">Edit</a> |
                    <a asp-page="./Details" asp-route-id="@item.id">Details</a> |
                    <a asp-page="./Delete" asp-route-id="@item.id">Delete</a> |
                    <a asp-page="./GetAddress" asp-route-id="@item.id">Get address</a>
                    <input type="button" id="getSearchresultsButton" name="getCoordinates" value="Get searchresults" onclick="callGetFilteredDorms()" />
                </td>
            </tr>
        }
    </tbody>

</table>
<input type="button" id="getSearchresultsButton" value="Get searchresults" onclick="javascript: dope()" /> 

Файл, который я пытаюсь включить, это site.js в этой структуре каталогов: http://prntscr.com/oapg36

1 Ответ

1 голос
/ 05 июля 2019

Так что на вашей странице нужно рассмотреть несколько разных вещей. Прежде всего, я думаю, что вам нужна структура, в которой есть все основные теги HTML:

<html lang="en">
    <head>
      <meta charset="utf-8">
      <script type="text/javascript" src="js/site.js"></script>
    </head>

    <body>
        {{PUT YOUR BODY HTML HERE}}
    </body>
</html>

Если ваш javascript правильно сопоставлен и, поскольку вы говорите, что app.UseStaticFiles(); был применен. Сначала попробуйте получить доступ к файлу, перейдя по адресу:

http://{{YOURDOMAINHERE}}/js/site.js

Получаете ли вы настоящий файл JavaScript? Если нет, то это не правильно отображается, и вам нужно исправить вашу конфигурацию.

Если это так, я думаю, что приведенная выше строка выглядит следующим образом:

<script type="text/javascript" src="js/site.js"></script>

Должен работать на вас.

Еще одна вещь, которую я вижу в вашем коде на C #, это то, что вы используете первый элемент вашего массива в качестве заголовка таблицы, а затем вы выполняете итерацию по тому же массиву Dorm. Это напечатает один и тот же первый элемент дважды. Подумайте над тем, чтобы поместить заголовки таблиц в их собственные переменные, а не хранить их в массиве.

...