У вас есть несколько проблем с текущим кодом:
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;
}