【发布时间】:2019-12-22 18:43:39
【问题描述】:
我有一个运动控制器和两个同名的方法
[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);
}
我想使用相似的名称来在各自的视图中呈现验证错误。但我目前面临的问题是 HttpPut 方法的错误 405。在我的情况下,我该如何解决?我已经阅读了一些关于编辑/添加 web.config 的文章,其中包含“remove name="WebDAVModule"”之类的内容,但是 1) 这些文章是在以前版本的 .NET core 上 2) 即使我添加了 web.config 的内容,例如
<system.webServer>
<modules runAllManagedModulesForAllRequests="false">
<remove name="WebDAVModule" />
</modules>
</system.webServer>
...项目根本无法启动,并引用了 IIS Express 引发的异常。那我该怎么办?我的“更新”视图是:
@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>
【问题讨论】:
标签: c# asp.net .net asp.net-core asp.net-core-mvc