Вызов Html.Actionlink из скрипта - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь вызвать ссылку действия из скрипта, но она не работает, но когда я использую window.open, она работает, но мне нужны другие свойства из-за моего вида CSS, если я могу вызвать Html.ActionLink, я могу открытьэто во вкладках на той же странице с моим шаблоном.

Вот код:

 function OnRowDblClick(s, e) {
    alert(e.visibleIndex);
    GridViewCitiesList.GetRowValues(e.visibleIndex, "CityGuid", OnGetRowValues);
}

function OnGetRowValues(data) {
    var url = Html.ActionLink("Edit", "CityAction", "City", new { CRUDType: CRUDTypes.Update, ModelGuid: data }, new { class: "btn btn-success", target: "_blank", title: "City Detail" });
    window.location.href = url;
}

Ошибка говорит:

Uncaught ReferenceError: Html не определен

1 Ответ

0 голосов
/ 12 октября 2018

У вас есть несколько проблем с текущим кодом:

1) Html.ActionLink - помощник MVC, вы должны добавить префикс @ на странице Razor CSHTML, чтобы установить его как помощник HTML.

2) Html.ActionLink генерирует тег привязки (<a>), а не строку URL.Используйте @Url.Action() помощник для создания URL.

3) data - переменная на стороне клиента, вы не можете передать ее помощнику HTML, который обрабатывал серверную часть.Вам нужно создать строку запроса для добавления data с параметром ModelGuid.

Исходя из приведенных выше объяснений, измените определение URL со следующего:

// this is totally wrong
var url = Html.ActionLink("Edit", "CityAction", "City", new { CRUDType: CRUDTypes.Update, ModelGuid: data }, new { class: "btn btn-success", target: "_blank", title: "City Detail" });

на это:

var url = '@Url.Action("CityAction", "City", new { CRUDType = CRUDTypes.Update })&ModelGuid=' + data;

Или вы можете попробовать добавить ModelGuid строку запроса параметра внутри routeValues и заменить ее значение на стороне клиента:

// this setup should also work
function OnGetRowValues(data) {
    var url = '@Url.Action("CityAction", "City", new { CRUDType = CRUDTypes.Update, ModelGuid = "XXXX" })';
    url = url.replace('XXXX', data);

    window.location.href = url;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...