I have an Exercise controller and two methods with the same name
[HttpGet]
public async Task<IActionResult> Update(int exerciseId)
{
Exercise exercise = (await this.exerciseService.GetExercises(exercise => exercise.Id == exerciseId)).FirstOrDefault();
return View(exercise);
}
[HttpPut]
public async Task<IActionResult> Update(Exercise exercise)
{
if (ModelState.IsValid)
{
await this.exerciseService.EditExercise(exercise);
return RedirectToAction("some-view-which-doesnt-matter-in-my-case");
}
return View(exercise);
}
I want to use the similar name in order to render validation errors in the respective view. But the problem I'm facing at the moment is the Error 405 at the HttpPut method. How can I fix it in my case? I have read some articles on editing/adding web.config with things like "remove name="WebDAVModule"" but 1) these articles are on previous versions of .NET core 2) even if I add web.config with content such as
<system.webServer>
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule" />
</modules>
</system.webServer>
...the project can't launch at all with some references to exceptions thrown by IIS Express. So what do I have to do? My "Update" view is:
@model DomainModels.Exercise
@{
ViewData["Title"] = "Update";
}
<h1>Update @Model.Name</h1>
<div>
<form method="put" asp-controller="Exercise" asp-action="Update">
<div asp-validation-summary="ModelOnly">
</div>
<div>
<h3>Exercise settings:</h3>
<input hidden asp-for="Id" />
<div>
<label asp-for="Name"></label><br />
<input asp-for="Name" />
<span asp-validation-for="Name"></span>
</div>
<div>
<label asp-for="FractureFixNumber"></label><br />
<input asp-for="FractureFixNumber" />
<span asp-validation-for="FractureFixNumber"></span>
</div>
<div>
<label asp-for="DislocationFixNumber"></label><br />
<input asp-for="DislocationFixNumber" />
<span asp-validation-for="DislocationFixNumber"></span>
</div>
<div>
<label asp-for="SprainFixNumber"></label><br />
<input asp-for="SprainFixNumber" />
<span asp-validation-for="SprainFixNumber"></span>
</div>
</div>
<div>
<h3>Exercise analysis range settings:</h3>
<input hidden asp-for="ExerciseAnalysisRange.ExerciseId" />
<div>
<label asp-for="ExerciseAnalysisRange.MinAnalysis1"></label><br />
<input asp-for="ExerciseAnalysisRange.MinAnalysis1" />
<span asp-validation-for="ExerciseAnalysisRange.MinAnalysis1"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MaxAnalysis1"></label><br />
<input asp-for="ExerciseAnalysisRange.MaxAnalysis1" />
<span asp-validation-for="ExerciseAnalysisRange.MaxAnalysis1"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MinAnalysis2"></label><br />
<input asp-for="ExerciseAnalysisRange.MinAnalysis2" />
<span asp-validation-for="ExerciseAnalysisRange.MinAnalysis2"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MaxAnalysis2"></label><br />
<input asp-for="ExerciseAnalysisRange.MaxAnalysis2" />
<span asp-validation-for="ExerciseAnalysisRange.MaxAnalysis2"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MinHighPressure"></label><br />
<input asp-for="ExerciseAnalysisRange.MinHighPressure" />
<span asp-validation-for="ExerciseAnalysisRange.MinHighPressure"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MaxHighPressure"></label><br />
<input asp-for="ExerciseAnalysisRange.MaxHighPressure" />
<span asp-validation-for="ExerciseAnalysisRange.MaxHighPressure"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MinLowPressure"></label><br />
<input asp-for="ExerciseAnalysisRange.MinLowPressure" />
<span asp-validation-for="ExerciseAnalysisRange.MinLowPressure"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MaxLowPressure"></label><br />
<input asp-for="ExerciseAnalysisRange.MaxLowPressure" />
<span asp-validation-for="ExerciseAnalysisRange.MaxLowPressure"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MinHeartBeats"></label><br />
<input asp-for="ExerciseAnalysisRange.MinHeartBeats" />
<span asp-validation-for="ExerciseAnalysisRange.MinHeartBeats"></span>
</div>
<div>
<label asp-for="ExerciseAnalysisRange.MaxHeartBeats"></label><br />
<input asp-for="ExerciseAnalysisRange.MaxHeartBeats" />
<span asp-validation-for="ExerciseAnalysisRange.MaxHeartBeats"></span>
</div>
<input type="submit" value="Update exercise" />
</div>
</form>
</div>