Действие 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.