{"action":"created","comment":{"url":"https://api.github.com/repos/aspnet/Mvc/pulls/comments/23817220","id":23817220,"diff_hunk":"@@ -0,0 +1,238 @@\n+﻿// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.\n+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\n+\n+using System;\n+using System.Collections.Generic;\n+using System.ComponentModel.DataAnnotations;\n+using System.Globalization;\n+using System.Linq;\n+using Microsoft.AspNet.Mvc.Core;\n+using Microsoft.AspNet.Mvc.Internal;\n+using Microsoft.AspNet.Mvc.ModelBinding;\n+using Microsoft.AspNet.Routing;\n+using Microsoft.Framework.DependencyInjection;\n+\n+namespace Microsoft.AspNet.Mvc\n+{\n+    [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]\n+    public class RemoteAttribute : ValidationAttribute, IClientModelValidator\n+    {\n+        private string _additionalFields = string.Empty;\n+        private string[] _additionalFieldsSplit = new string[0];\n+\n+        /// <summary>\n+        /// Initializes a new instance of the <see cref=\"RemoteAttribute\"/> class.\n+        /// </summary>\n+        /// <remarks>\n+        /// Intended for subclasses that support URL generation with no route, action, or controller names.\n+        /// </remarks>\n+        protected RemoteAttribute()\n+            : base(Resources.RemoteAttribute_RemoteValidationFailed)\n+        {\n+            RouteData = new RouteValueDictionary();\n+        }\n+\n+        /// <summary>\n+        /// Initializes a new instance of the <see cref=\"RemoteAttribute\"/> class.\n+        /// </summary>\n+        /// <param name=\"routeName\">\n+        /// The route name used when generating the URL where client should send a validation request.\n+        /// </param>\n+        /// <remarks>\n+        /// Finds the <paramref name=\"routeName\"/> in any area of the application.\n+        /// </remarks>\n+        public RemoteAttribute(string routeName)\n+            : this()\n+        {\n+            RouteName = routeName;\n+        }\n+\n+        /// <summary>\n+        /// Initializes a new instance of the <see cref=\"RemoteAttribute\"/> class.\n+        /// </summary>\n+        /// <param name=\"action\">\n+        /// The action name used when generating the URL where client should send a validation request.\n+        /// </param>\n+        /// <param name=\"controller\">\n+        /// The controller name used when generating the URL where client should send a validation request.\n+        /// </param>\n+        /// <remarks>\n+        /// <para>\n+        /// If either <paramref name=\"action\"/> or <paramref name=\"controller\"/> is <c>null</c>, uses the corresponding\n+        /// ambient value.\n+        /// </para>\n+        /// <para>Finds the <paramref name=\"controller\"/> in the current area.</para>\n+        /// </remarks>\n+        public RemoteAttribute(string action, string controller)\n+            : this()\n+        {\n+            if (action != null)\n+            {\n+                RouteData[\"action\"] = action;\n+            }\n+\n+            if (controller != null)\n+            {\n+                RouteData[\"controller\"] = controller;\n+            }\n+        }\n+\n+        /// <summary>\n+        /// Initializes a new instance of the <see cref=\"RemoteAttribute\"/> class.\n+        /// </summary>\n+        /// <param name=\"action\">\n+        /// The action name used when generating the URL where client should send a validation request.\n+        /// </param>\n+        /// <param name=\"controller\">\n+        /// The controller name used when generating the URL where client should send a validation request.\n+        /// </param>\n+        /// <param name=\"areaName\">The name of the area containing the <paramref name=\"controller\"/>.</param>\n+        /// <remarks>\n+        /// <para>\n+        /// If either <paramref name=\"action\"/> or <paramref name=\"controller\"/> is <c>null</c>, uses the corresponding\n+        /// ambient value.\n+        /// </para>\n+        /// If <paramref name=\"areaName\"/> is <c>null</c>, finds the <paramref name=\"controller\"/> in the root area.\n+        /// Use the <see cref=\"RemoteAttribute(string, string)\"/> overload find the <paramref name=\"controller\"/> in\n+        /// the current area. Or explicitly pass the current area's name as the <paramref name=\"areaName\"/> argument to\n+        /// this overload.\n+        /// </remarks>\n+        public RemoteAttribute(string action, string controller, string areaName)\n+            : this(action, controller)\n+        {\n+            RouteData[\"area\"] = areaName;\n+        }\n+\n+        /// <summary>\n+        /// Gets or sets the HTTP method (<c>\"Get\"</c> or <c>\"Post\"</c>) client should use when sending a validation\n+        /// request.\n+        /// </summary>\n+        public string HttpMethod { get; set; }\n+\n+        /// <summary>\n+        /// Gets or sets the comma-separated names of fields the client should include in a validation request.\n+        /// </summary>\n+        public string AdditionalFields\n+        {\n+            get { return _additionalFields; }\n+            set\n+            {\n+                _additionalFields = value ?? string.Empty;\n+                _additionalFieldsSplit = SplitString(value).AsArray();\n+            }\n+        }\n+\n+        /// <summary>\n+        /// Gets the <see cref=\"RouteValueDictionary\"/> used when generating the URL where client should send a\n+        /// validation request.\n+        /// </summary>\n+        protected RouteValueDictionary RouteData { get; }\n+\n+        /// <summary>\n+        /// Gets or sets the route name used when generating the URL where client should send a validation request.\n+        /// </summary>\n+        protected string RouteName { get; set; }\n+\n+        /// <summary>\n+        /// Formats <paramref name=\"property\"/> and <see cref=\"AdditionalFields\"/> for use in generated HTML.\n+        /// </summary>\n+        /// <param name=\"property\">\n+        /// Name of the property associated with this <see cref=\"RemoteAttribute\"/> instance.\n+        /// </param>\n+        /// <returns>Comma-separated names of fields the client should include in a validation request.</returns>\n+        /// <remarks>\n+        /// Excludes any whitespace from <see cref=\"AdditionalFields\"/> in the return value.\n+        /// Prefixes each field name in the return value with <c>\"*.\"</c>.\n+        /// </remarks>\n+        public string FormatAdditionalFieldsForClientValidation(string property)\n+        {\n+            if (string.IsNullOrEmpty(property))\n+            {\n+                throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, \"property\");\n+            }\n+\n+            var delimitedAdditionalFields = FormatPropertyForClientValidation(property);\n+            foreach (var field in _additionalFieldsSplit)\n+            {\n+                delimitedAdditionalFields += \",\" + FormatPropertyForClientValidation(field);\n+            }\n+\n+            return delimitedAdditionalFields;\n+        }\n+\n+        /// <summary>\n+        /// Formats <paramref name=\"property\"/> for use in generated HTML.\n+        /// </summary>\n+        /// <param name=\"property\">One field name the client should include in a validation request.</param>\n+        /// <returns>Name of a field the client should include in a validation request.</returns>\n+        /// <remarks>Returns <paramref name=\"property\"/> with a <c>\"*.\"</c> prefix.</remarks>\n+        public static string FormatPropertyForClientValidation(string property)\n+        {\n+            if (string.IsNullOrEmpty(property))\n+            {\n+                throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, \"property\");\n+            }\n+\n+            return \"*.\" + property;\n+        }\n+\n+        /// <summary>\n+        /// Returns the URL where the client should send a validation request.\n+        /// </summary>\n+        /// <param name=\"context\">The <see cref=\"ClientModelValidationContext\"/> used to generate the URL.</param>\n+        /// <returns>The URL where the client should send a validation request.</returns>\n+        protected virtual string GetUrl([NotNull] ClientModelValidationContext context)\n+        {\n+            var urlHelper = context.RequestServices.GetRequiredService<IUrlHelper>();\n+            var url = urlHelper.RouteUrl(RouteName, values: RouteData, protocol: null, host: null, fragment: null);\n+            if (url == null)\n+            {\n+                throw new InvalidOperationException(Resources.RemoteAttribute_NoUrlFound);\n+            }\n+\n+            return url;\n+        }\n+\n+        /// <inheritdoc />\n+        public override string FormatErrorMessage(string name)\n+        {\n+            return string.Format(CultureInfo.CurrentCulture, ErrorMessageString, name);\n+        }\n+\n+        /// <inheritdoc />\n+        public override bool IsValid(object value)\n+        {\n+            return true;","path":"src/Microsoft.AspNet.Mvc.Core/RemoteAttribute.cs","position":205,"original_position":205,"commit_id":"972d88d135c764eb1b3b44730552930d9bbb7dd7","original_commit_id":"972d88d135c764eb1b3b44730552930d9bbb7dd7","user":{"login":"dougbu","id":6431421,"avatar_url":"https://avatars.githubusercontent.com/u/6431421?v=3","gravatar_id":"","url":"https://api.github.com/users/dougbu","html_url":"https://github.com/dougbu","followers_url":"https://api.github.com/users/dougbu/followers","following_url":"https://api.github.com/users/dougbu/following{/other_user}","gists_url":"https://api.github.com/users/dougbu/gists{/gist_id}","starred_url":"https://api.github.com/users/dougbu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dougbu/subscriptions","organizations_url":"https://api.github.com/users/dougbu/orgs","repos_url":"https://api.github.com/users/dougbu/repos","events_url":"https://api.github.com/users/dougbu/events{/privacy}","received_events_url":"https://api.github.com/users/dougbu/received_events","type":"User","site_admin":false},"body":":ok: ","created_at":"2015-01-30T00:59:41Z","updated_at":"2015-01-30T00:59:41Z","html_url":"https://github.com/aspnet/Mvc/pull/1914#discussion_r23817220","pull_request_url":"https://api.github.com/repos/aspnet/Mvc/pulls/1914","_links":{"self":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/comments/23817220"},"html":{"href":"https://github.com/aspnet/Mvc/pull/1914#discussion_r23817220"},"pull_request":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/1914"}}},"pull_request":{"url":"https://api.github.com/repos/aspnet/Mvc/pulls/1914","id":28247987,"html_url":"https://github.com/aspnet/Mvc/pull/1914","diff_url":"https://github.com/aspnet/Mvc/pull/1914.diff","patch_url":"https://github.com/aspnet/Mvc/pull/1914.patch","issue_url":"https://api.github.com/repos/aspnet/Mvc/issues/1914","number":1914,"state":"open","locked":false,"title":"Add support for the `[Remote]` attribute","user":{"login":"dougbu","id":6431421,"avatar_url":"https://avatars.githubusercontent.com/u/6431421?v=3","gravatar_id":"","url":"https://api.github.com/users/dougbu","html_url":"https://github.com/dougbu","followers_url":"https://api.github.com/users/dougbu/followers","following_url":"https://api.github.com/users/dougbu/following{/other_user}","gists_url":"https://api.github.com/users/dougbu/gists{/gist_id}","starred_url":"https://api.github.com/users/dougbu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dougbu/subscriptions","organizations_url":"https://api.github.com/users/dougbu/orgs","repos_url":"https://api.github.com/users/dougbu/repos","events_url":"https://api.github.com/users/dougbu/events{/privacy}","received_events_url":"https://api.github.com/users/dougbu/received_events","type":"User","site_admin":false},"body":"- #439 \r\n- see individual commits for details and the component parts of this PR\r\n- some highlights\r\n - copy things over from MVC 5.2 and get them working in new world\r\n - add `IClientModelValidator` support in `DataAnnotationsModelValidator` (interface existed and doc comments mentioned it. but interface wasn't supported.)\r\n - add unit tests with slightly more coverage than in MVC 5.2\r\n - add functional tests using `[Remote]`","created_at":"2015-01-29T02:02:33Z","updated_at":"2015-01-30T00:59:41Z","closed_at":null,"merged_at":null,"merge_commit_sha":"13ab4aefb38a9c6ada80d07bf540065c5bc9fa92","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/aspnet/Mvc/pulls/1914/commits","review_comments_url":"https://api.github.com/repos/aspnet/Mvc/pulls/1914/comments","review_comment_url":"https://api.github.com/repos/aspnet/Mvc/pulls/comments/{number}","comments_url":"https://api.github.com/repos/aspnet/Mvc/issues/1914/comments","statuses_url":"https://api.github.com/repos/aspnet/Mvc/statuses/972d88d135c764eb1b3b44730552930d9bbb7dd7","head":{"label":"aspnet:remote.attribute.439","ref":"remote.attribute.439","sha":"972d88d135c764eb1b3b44730552930d9bbb7dd7","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":15126429,"name":"Mvc","full_name":"aspnet/Mvc","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/Mvc","description":"Model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and Web Pages w/ Razor.","fork":false,"url":"https://api.github.com/repos/aspnet/Mvc","forks_url":"https://api.github.com/repos/aspnet/Mvc/forks","keys_url":"https://api.github.com/repos/aspnet/Mvc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/Mvc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/Mvc/teams","hooks_url":"https://api.github.com/repos/aspnet/Mvc/hooks","issue_events_url":"https://api.github.com/repos/aspnet/Mvc/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/Mvc/events","assignees_url":"https://api.github.com/repos/aspnet/Mvc/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/Mvc/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/Mvc/tags","blobs_url":"https://api.github.com/repos/aspnet/Mvc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/Mvc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/Mvc/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/Mvc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/Mvc/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/Mvc/languages","stargazers_url":"https://api.github.com/repos/aspnet/Mvc/stargazers","contributors_url":"https://api.github.com/repos/aspnet/Mvc/contributors","subscribers_url":"https://api.github.com/repos/aspnet/Mvc/subscribers","subscription_url":"https://api.github.com/repos/aspnet/Mvc/subscription","commits_url":"https://api.github.com/repos/aspnet/Mvc/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/Mvc/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/Mvc/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/Mvc/issues/comments/{number}","contents_url":"https://api.github.com/repos/aspnet/Mvc/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/Mvc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/Mvc/merges","archive_url":"https://api.github.com/repos/aspnet/Mvc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/Mvc/downloads","issues_url":"https://api.github.com/repos/aspnet/Mvc/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/Mvc/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/Mvc/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/Mvc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/Mvc/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/Mvc/releases{/id}","created_at":"2013-12-12T03:54:00Z","updated_at":"2015-01-30T00:31:33Z","pushed_at":"2015-01-30T00:48:08Z","git_url":"git://github.com/aspnet/Mvc.git","ssh_url":"git@github.com:aspnet/Mvc.git","clone_url":"https://github.com/aspnet/Mvc.git","svn_url":"https://github.com/aspnet/Mvc","homepage":"","size":64243,"stargazers_count":1288,"watchers_count":1288,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":370,"mirror_url":null,"open_issues_count":261,"forks":370,"open_issues":261,"watchers":1288,"default_branch":"dev"}},"base":{"label":"aspnet:dev","ref":"dev","sha":"a452205e602e9fd9a3d69c56a2ec4e4290000493","user":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"repo":{"id":15126429,"name":"Mvc","full_name":"aspnet/Mvc","owner":{"login":"aspnet","id":6476660,"avatar_url":"https://avatars.githubusercontent.com/u/6476660?v=3","gravatar_id":"","url":"https://api.github.com/users/aspnet","html_url":"https://github.com/aspnet","followers_url":"https://api.github.com/users/aspnet/followers","following_url":"https://api.github.com/users/aspnet/following{/other_user}","gists_url":"https://api.github.com/users/aspnet/gists{/gist_id}","starred_url":"https://api.github.com/users/aspnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aspnet/subscriptions","organizations_url":"https://api.github.com/users/aspnet/orgs","repos_url":"https://api.github.com/users/aspnet/repos","events_url":"https://api.github.com/users/aspnet/events{/privacy}","received_events_url":"https://api.github.com/users/aspnet/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/aspnet/Mvc","description":"Model view controller framework for building dynamic web sites with clean separation of concerns, including the merged MVC, Web API, and Web Pages w/ Razor.","fork":false,"url":"https://api.github.com/repos/aspnet/Mvc","forks_url":"https://api.github.com/repos/aspnet/Mvc/forks","keys_url":"https://api.github.com/repos/aspnet/Mvc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aspnet/Mvc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aspnet/Mvc/teams","hooks_url":"https://api.github.com/repos/aspnet/Mvc/hooks","issue_events_url":"https://api.github.com/repos/aspnet/Mvc/issues/events{/number}","events_url":"https://api.github.com/repos/aspnet/Mvc/events","assignees_url":"https://api.github.com/repos/aspnet/Mvc/assignees{/user}","branches_url":"https://api.github.com/repos/aspnet/Mvc/branches{/branch}","tags_url":"https://api.github.com/repos/aspnet/Mvc/tags","blobs_url":"https://api.github.com/repos/aspnet/Mvc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aspnet/Mvc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aspnet/Mvc/git/refs{/sha}","trees_url":"https://api.github.com/repos/aspnet/Mvc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aspnet/Mvc/statuses/{sha}","languages_url":"https://api.github.com/repos/aspnet/Mvc/languages","stargazers_url":"https://api.github.com/repos/aspnet/Mvc/stargazers","contributors_url":"https://api.github.com/repos/aspnet/Mvc/contributors","subscribers_url":"https://api.github.com/repos/aspnet/Mvc/subscribers","subscription_url":"https://api.github.com/repos/aspnet/Mvc/subscription","commits_url":"https://api.github.com/repos/aspnet/Mvc/commits{/sha}","git_commits_url":"https://api.github.com/repos/aspnet/Mvc/git/commits{/sha}","comments_url":"https://api.github.com/repos/aspnet/Mvc/comments{/number}","issue_comment_url":"https://api.github.com/repos/aspnet/Mvc/issues/comments/{number}","contents_url":"https://api.github.com/repos/aspnet/Mvc/contents/{+path}","compare_url":"https://api.github.com/repos/aspnet/Mvc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aspnet/Mvc/merges","archive_url":"https://api.github.com/repos/aspnet/Mvc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aspnet/Mvc/downloads","issues_url":"https://api.github.com/repos/aspnet/Mvc/issues{/number}","pulls_url":"https://api.github.com/repos/aspnet/Mvc/pulls{/number}","milestones_url":"https://api.github.com/repos/aspnet/Mvc/milestones{/number}","notifications_url":"https://api.github.com/repos/aspnet/Mvc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aspnet/Mvc/labels{/name}","releases_url":"https://api.github.com/repos/aspnet/Mvc/releases{/id}","created_at":"2013-12-12T03:54:00Z","updated_at":"2015-01-30T00:31:33Z","pushed_at":"2015-01-30T00:48:08Z","git_url":"git://github.com/aspnet/Mvc.git","ssh_url":"git@github.com:aspnet/Mvc.git","clone_url":"https://github.com/aspnet/Mvc.git","svn_url":"https://github.com/aspnet/Mvc","homepage":"","size":64243,"stargazers_count":1288,"watchers_count":1288,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":370,"mirror_url":null,"open_issues_count":261,"forks":370,"open_issues":261,"watchers":1288,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/1914"},"html":{"href":"https://github.com/aspnet/Mvc/pull/1914"},"issue":{"href":"https://api.github.com/repos/aspnet/Mvc/issues/1914"},"comments":{"href":"https://api.github.com/repos/aspnet/Mvc/issues/1914/comments"},"review_comments":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/1914/comments"},"review_comment":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/aspnet/Mvc/pulls/1914/commits"},"statuses":{"href":"https://api.github.com/repos/aspnet/Mvc/statuses/972d88d135c764eb1b3b44730552930d9bbb7dd7"}}}}