Действие URL Javascript в виде бритвы

У меня есть метод javascript onRowSelected что становится злым Как передать rowid в определенном действии контроллера с HttpGet?

function onRowSelected(rowid, status) {
        alert('This row has id: ' + rowid);
        //url: @Action.Url("Action","Controller")
        //post:"GET"
        // Something like this?
    }

1 ответ

Решение

Если ваше действие контроллера ожидает параметр строки запроса id:

var url = '@Url.Action("Action", "Controller")?id=' + rowid;

или если вы хотите передать его как часть маршрута, вы можете использовать replace:

var url = '@Url.Action("Action", "Controller", new { id = "_id_" })'
    .replace('_id_', rowid);

Еще одна возможность, если вы собираетесь отправить запрос AJAX, это передать его как часть тела POST:

$.ajax({
    url: '@Url.Action("Action", "Controller")',
    type: 'POST',
    data: { id: rowid },
    success: function(result) {

    }
});

или в качестве параметра строки запроса, если вы используете GET:

$.ajax({
    url: '@Url.Action("Action", "Controller")',
    type: 'GET',
    data: { id: rowid },
    success: function(result) {

    }
});

Все те предполагают, что ваше действие контроллера принимает параметр id, конечно:

public ActionResult Action(string id)
{
    ...
}

Так что вы можете увидеть много способов достижения одной и той же цели.

Метод Дарина будет работать нормально и безупречно.

Я бы предложил еще один способ для представления Razor использовать значение модели, используя @Html.actionlink в jsp

var URLvalue='@Html.ActionLink("UserString", "action", new { routeValueName1 = "__value1__", routeValueName2="__value2__" }, htmlAttributes: new { @class = "btn btn-default", @role = "button" })'
     .replace('__value1__', Model.somevalue).replace('__value2__',  Model.somevalue);

вы можете использовать URLvalue где угодно в jsp или jquery.

Другие вопросы по тегам