diff --git a/Classes/ViewHelpers/Backend/EditOnClickViewHelper.php b/Classes/ViewHelpers/Backend/EditOnClickViewHelper.php
index 9645ebf43252d074dd791cd6151da6863d22f80b..2d3cbb0d57a1ebe15c913922a3c2f78fdc5257db 100644
--- a/Classes/ViewHelpers/Backend/EditOnClickViewHelper.php
+++ b/Classes/ViewHelpers/Backend/EditOnClickViewHelper.php
@@ -28,7 +28,10 @@ namespace SGalinski\SgNews\ViewHelpers\Backend;
 
 use SGalinski\SgNews\Utility\BackendNewsUtility;
 use SGalinski\SgNews\ViewHelpers\AbstractViewHelper;
-use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Backend\Routing\Exception\RouteNotFoundException;
+use TYPO3\CMS\Backend\Routing\UriBuilder;
+use TYPO3\CMS\Core\Utility\ArrayUtility;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
 
 /**
  * Class EditOnClickViewHelper
@@ -52,18 +55,36 @@ class EditOnClickViewHelper extends AbstractViewHelper {
 	 * @return string
 	 */
 	public function render(): string {
-		$table = $this->arguments['table'];
-		$uid = $this->arguments['uid'];
-		$new = $this->arguments['new'];
-		$type = $this->arguments['type'];
-		$additionalParameters = '';
-		if ($new && $table === 'pages' && in_array($type, ['news', 'category'], TRUE)) {
-			$additionalParameters = '&overrideVals[pages][doktype]=' .
-				($type === 'news' ? BackendNewsUtility::NEWS_DOKTYPE : BackendNewsUtility::CATEGORY_DOKTYPE);
+		$additionalParameters = [];
+		if ($this->arguments['new'] && $this->arguments['table'] === 'pages' && in_array($this->arguments['type'], ['news', 'category'], TRUE)) {
+			$additionalParameters = [
+				'overrideVals' =>
+					[
+						'pages' =>
+						[
+							'doktype' => $this->arguments['type'] === 'news' ? BackendNewsUtility::NEWS_DOKTYPE : BackendNewsUtility::CATEGORY_DOKTYPE
+						]
+					]
+				];
+		}
+		$parameters = [
+			'edit' => [
+				$this->arguments['table'] => [
+					$this->arguments['uid'] => [
+						$this->arguments['new'] ? 'new' : 'edit'
+					]
+				]
+			],
+			'returnUrl' => rawurlencode(GeneralUtility::getIndpEnv('REQUEST_URI'))
+		];
+		ArrayUtility::mergeRecursiveWithOverrule($parameters, $additionalParameters);
+		try {
+			return GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute(
+				'record_edit',
+				$parameters
+			);
+		} catch (RouteNotFoundException $exception) {
+			return '';
 		}
-
-		return BackendUtility::editOnClick(
-			'&edit[' . $table . '][' . $uid . ']=' . ($new ? 'new' : 'edit') . $additionalParameters, '', -1
-		);
 	}
 }