Ответ 1
Чтобы перенаправить:
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
window.location.href = "your/url";
else
return false;
}
У меня есть input type="button"
<input type="button" name="DeleteJob" runat="server" value="Löschen" onclick="DeleteJob()" />
и метод JavaScript:
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
return true;
else
return false;
}
Как я могу вместо этого вернуть true, перенаправить на Action DeleteJob?
[HttpGet]
public ActionResult DeleteJob(string selectedObject)
{
return View();
}
Чтобы перенаправить:
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
window.location.href = "your/url";
else
return false;
}
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
window.location.href = "/{controller}/{action}/{params}";
else
return false;
}
Я хочу, чтобы я мог просто прокомментировать ответ yojimbo87, чтобы опубликовать это, но у меня недостаточно репутации, чтобы комментировать. Было указано, что этот относительный путь работает только от корня:
window.location.href = "/{controller}/{action}/{params}";
Просто хочу подтвердить, что вы можете использовать @Url.Content для предоставления абсолютного пути:
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
window.location.href = '@Url.Content("~/{controller}/{action}/{params}")';
else
return false;
}
Может быть, лучше сделать привязку с URL-адресом DeleteJob вместо кнопки?
<a href="<%=Url.Action("DeleteJob", "YourController", new {selectedObject="someObject"})%>" onclick="return DeleteJob()">Löschen</a>
и используйте свой javascript, который вы написали уже:
function DeleteJob() {
if (confirm("Do you really want to delete selected job/s?"))
return true;
else
return false;
}
Итак, если функция возвращает true - вы будете перенаправлены. Если функция возвращает false - вы все равно остаетесь на странице.
Используйте метод @Url.Action. Это будет работать и определяет правильный маршрут независимо от того, на каком сервере IIS вы развернулись.
ПРИМЕР- window.location.href= "@Url.Action(" Действие "," Контроллер ")";
поэтому в случае действия индекса на контроллере Home - window.location.href= "@Url.Action(" Index "," Home ")";
Вы можете либо отправить запрос Ajax на сервер, либо использовать window.location для этого URL.
Я немного боролся с этим, потому что хотел использовать Knockout для привязки кнопки к событию click. Здесь моя кнопка и соответствующая функция изнутри моей модели представления.
<a class="btn btn-secondary showBusy" data-bind="click: back">Back to Dashboard</a>
var vm = function () {
...
self.back = function() {
window.location.href = '@Url.Action("LicenseDashboard", "Application")';
}
}