Как использовать имя действия в jquery ajax вместо insinde html.actionlink? - PullRequest
1 голос
/ 15 октября 2019

Я хочу использовать html.actionlink без имени действия, потому что имя действия находится в коде jquery ajax. Я знаю другие способы решения этой проблемы, но я хочу знать, как можно решить эту проблему с помощью html.actionlink.

это домашнее задание asp.net-mvc с jquery ajax и т. Д. Я хочу отобразить сведения о студентах избазы данных, нажав на их имя.

извините за мой плохой английский. tnx

<table class="table table-bordered table-hover table-striped" style="direction:rtl">
    <tr>
        نام و نام خانوادگی دانشجو
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>                
                @Html.ActionLink(item.FName + " " + item.LName +
                                    " by JQuery AJAX ", null, null,
                                    new { onclick = "jqueryAjaxDetails(" + item.Id + ")" })
            </td>
        </tr>
    }

</table>
<script>
    function jqueryAjaxDetails(sID) {
        $.ajax({
            type: "POST",
            url: "/University/_AjaxDetails",
            data: JSON.stringify({ id: sID }),
            contentType: "application/json; charset=utf-8",
            datatype: "html",
            success: function (result) {
                $("#Details").html(result);
            },
            error: function (result) {
                alert("Failure.");
            }
        });
    }
</script>

FoundЯ нашел решение с помощью тега (а), например:

<a href="#" onclick="jqueryAjaxDetails(@(item.Id))">
   @(item.FName+" "+item.LName + "by JQuery AJAX")
</a>

, но как решитьэто @ Html.Actionlink ????

html-код, который генерирует @ Html.Actionlink:

<a href="/University/AjaxList" onclick="jqueryAjaxDetails(3)">Yeganeh MJanlou by JQuery AJAX </a>

этот код работает, но обновляется после нажатия, потому что (href) не пусто.

как отправить пустую ссылку ActionName на (href)? ???‍♂️

1 Ответ

1 голос
/ 15 октября 2019

Пожалуйста, попробуйте это

Для получения более подробной информации нажмите Ссылка

cshtml страница

<table class="table table-bordered table-hover table-striped" style="direction:rtl">
    <tr>
        نام و نام خانوادگی دانشجو
    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>                
                @Html.ActionLink(item.FName + " " + item.LName +
                                    " by JQuery AJAX ", "_AjaxDetails", "University",
                                    new { onclick = "return  jqueryAjaxDetails(" + item.Id + ")" })
            </td>
        </tr>
    }

</table>

Примечание: ваш ActionLink также работает, вам нужно поместить в приведенном выше примере только оператор возврата, указанный выше.

Нельзя указывать нулевые значения в действии, а имя контроллера вHtml.ActionLink

Другой способ на странице cshtml

 <table class="table table-bordered table-hover table-striped" style="direction:rtl">
        <tr>
            نام و نام خانوادگی دانشجو
        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>                
                   <a href="#" onclick = "return jqueryAjaxDetails(" + @item.Id + ")">@string.Concat(item.FName," ", item.LName, " by JQuery AJAX")</a>
                </td>
            </tr>
        }

    </table>

Код Javascript

<script>
    function jqueryAjaxDetails(sID) {
        $.ajax({
            type: "POST",
            url: '@Url.Action("_AjaxDetails", "University")',
            data: JSON.stringify({ id: sID }),
            contentType: "application/json; charset=utf-8",
            datatype: "html",
            success: function (result) {
                $("#Details").html(result);
            },
            error: function (result) {
                alert("Failure.");
            }
        });
    }
</script>
...