{"record":{"id":"62ca363c6ac4ef38","repo":"PrismLibrary/Prism","slug":"argumentnullexception-nameof-target","errorCode":null,"errorMessage":"ArgumentNullException(nameof(target))","messagePattern":"ArgumentNullException\\(nameof\\(target\\)\\)","errorType":"exception","errorClass":"ArgumentNullException","httpStatus":null,"severity":"error","filePath":"src/Prism.Core/Navigation/Regions/NavigationAsyncExtensions.cs","lineNumber":46,"sourceCode":"        /// <param name=\"target\">The navigation target</param>\n        public static void RequestNavigate(this INavigateAsync navigation, string target)\n        {\n            RequestNavigate(navigation, target, nr => { });\n        }\n\n        /// <summary>\n        /// Initiates navigation to the target specified by the <paramref name=\"target\"/>.\n        /// </summary>\n        /// <param name=\"navigation\">The navigation object.</param>\n        /// <param name=\"target\">The navigation target</param>\n        /// <param name=\"navigationCallback\">The callback executed when the navigation request is completed.</param>\n        public static void RequestNavigate(this INavigateAsync navigation, string target, Action<NavigationResult> navigationCallback)\n        {\n            if (navigation == null)\n                throw new ArgumentNullException(nameof(navigation));\n\n            if (target == null)\n                throw new ArgumentNullException(nameof(target));\n\n            var targetUri = new Uri(target, UriKind.RelativeOrAbsolute);\n\n            navigation.RequestNavigate(targetUri, navigationCallback);\n        }\n\n        /// <summary>\n        /// Initiates navigation to the target specified by the <see cref=\"Uri\"/>.\n        /// </summary>\n        /// <param name=\"navigation\">The navigation object.</param>\n        /// <param name=\"target\">The navigation target</param>\n        public static void RequestNavigate(this INavigateAsync navigation, Uri target)\n        {\n            if (navigation == null)\n                throw new ArgumentNullException(nameof(navigation));\n\n            navigation.RequestNavigate(target, nr => { });\n        }","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/PrismLibrary/Prism/blob/358118cd640d9a22ff8cf21c8ad197fa038b7990/src/Prism.Core/Navigation/Regions/NavigationAsyncExtensions.cs#L28-L64","documentation":"The same RequestNavigate(string target, callback) overload validates target immediately after validating navigation; passing a null target string throws ArgumentNullException(nameof(target)). Prism parses the string into a Uri (RelativeOrAbsolute) right after the check.","triggerScenarios":"Calling RequestNavigate(navigation, null, callback) — commonly when the target view name is built dynamically (from a binding, config value, or method result) and evaluates to null.","commonSituations":"Navigation target taken from a bound property, query-string value, or settings key that is unset; string interpolation that produced null via ToString of null object in older code paths.","solutions":["Validate the target string before calling (string.IsNullOrEmpty) and fall back to a default view.","Fix the source producing the null name (binding, config, navigation parameter).","Use nameof(SomeView) or constants for view names instead of dynamic strings."],"exampleFix":"// before\nvar target = navParams[\"destination\"] as string;\nregion.RequestNavigate(target, r => {}); // target may be null\n// after\nvar target = navParams[\"destination\"] as string ?? \"Home\";\nregion.RequestNavigate(target, r => {});","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(target))\n    target = \"Home\"; // default view","typeGuard":null,"tryCatchPattern":"try { region.RequestNavigate(target, r => {}); }\ncatch (ArgumentNullException ex) { logger.LogWarning(ex, \"Null navigation target\"); }","preventionTips":["Coalesce dynamic targets to a default view name.","Use nameof(View) or constants for view names.","Validate config/bound values feeding navigation targets."],"tags":["prism","navigation","argument-null","target-uri"],"backgroundTag":"null-argument","analyzedSha":"358118cd640d9a22ff8cf21c8ad197fa038b7990","analyzedAt":"2026-09-15T15:00:31.079Z","contentChangedAt":"2026-09-15T15:00:31.079Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}