Added RedirectToAction overload with no arguments
This commit is contained in:
parent
06f6de6c11
commit
4f18d99d02
|
|
@ -456,6 +456,36 @@ namespace Microsoft.AspNetCore.Mvc
|
||||||
return new LocalRedirectResult(localUrl: localUrl, permanent: true, preserveMethod: true);
|
return new LocalRedirectResult(localUrl: localUrl, permanent: true, preserveMethod: true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Redirects (<see cref="StatusCodes.Status302Found"/>) to an action with the same name as current one.
|
||||||
|
/// The 'controller' and 'action' names are retrieved from the ambient values of the current request.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The created <see cref="RedirectToActionResult"/> for the response.</returns>
|
||||||
|
/// <example>
|
||||||
|
/// A POST request to an action named "Product" updates a product and redirects to an action, also named
|
||||||
|
/// "Product", showing details of the updated product.
|
||||||
|
/// <code>
|
||||||
|
/// [HttpGet]
|
||||||
|
/// public IActionResult Product(int id)
|
||||||
|
/// {
|
||||||
|
/// var product = RetrieveProduct(id);
|
||||||
|
/// return View(product);
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// [HttpPost]
|
||||||
|
/// public IActionResult Product(int id, Product product)
|
||||||
|
/// {
|
||||||
|
/// UpdateProduct(product);
|
||||||
|
/// return RedirectToAction();
|
||||||
|
/// }
|
||||||
|
/// </code>
|
||||||
|
/// </example>
|
||||||
|
[NonAction]
|
||||||
|
public virtual RedirectToActionResult RedirectToAction()
|
||||||
|
{
|
||||||
|
return RedirectToAction(actionName: null);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Redirects (<see cref="StatusCodes.Status302Found"/>) to the specified action using the <paramref name="actionName"/>.
|
/// Redirects (<see cref="StatusCodes.Status302Found"/>) to the specified action using the <paramref name="actionName"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -402,6 +402,24 @@ namespace Microsoft.AspNetCore.Mvc.FunctionalTests
|
||||||
Assert.Equal(expected, response.Trim());
|
Assert.Equal(expected, response.Trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public async Task RedirectToAction_WithEmptyActionName_UsesAmbientValue()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var product = new List<KeyValuePair<string, string>>();
|
||||||
|
product.Add(new KeyValuePair<string, string>("SampleInt", "20"));
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var response = await Client.PostAsync("/Home/Product", new FormUrlEncodedContent(product));
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.Equal(HttpStatusCode.Redirect, response.StatusCode);
|
||||||
|
Assert.NotNull(response.Headers.Location);
|
||||||
|
Assert.Equal("/Home/Product", response.Headers.Location.ToString());
|
||||||
|
|
||||||
|
var responseBody = await Client.GetStringAsync("/Home/Product");
|
||||||
|
Assert.Equal("Get Product", responseBody);
|
||||||
|
}
|
||||||
[Fact]
|
[Fact]
|
||||||
public async Task ActionMethod_ReturningActionMethodOfT_WithBadRequest()
|
public async Task ActionMethod_ReturningActionMethodOfT_WithBadRequest()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -108,5 +108,17 @@ namespace BasicWebSite.Controllers
|
||||||
{
|
{
|
||||||
return ControllerContext.ActionDescriptor.Properties["description"].ToString();
|
return ControllerContext.ActionDescriptor.Properties["description"].ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Product()
|
||||||
|
{
|
||||||
|
return Content("Get Product");
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult Product(Product product)
|
||||||
|
{
|
||||||
|
return RedirectToAction();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue