質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

3449閲覧

ASP.NET Coreにおいて、POSTしたいのに405が返ってくる

K-actus

総合スコア22

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/02/17 02:55

こんにちは。
ASP.NET Coreについて初学者なので拙いところもあると思いますが、よろしくお願いします。

実現したいこと

以下のような表がHTMLであるとします。

ID果物
1りんご詳細
2みかん詳細
3キウイ詳細

[詳細]部分はリンクになっていて、各々の詳細情報が見られるようにしたいです。
しかし実装しても405が返ってきてページが表示されません。
どこでミスしてるのか見当がつかないので、回答よろしくお願いします。

###コード
以下抜粋してコードを記載します。

Model

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5using System.ComponentModel; 6using System.ComponentModel.DataAnnotations; 7 8 9namespace Sample.Models 10{ 11 [DisplayColumn("Body")] 12 public class FruitsModel 13 { 14 public int Id { get; set; } 15 16 [DisplayName(" 果物 ")] 17 public string Fruits { get; set; } 18 } 19 20}

Controller

1 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using System.Threading.Tasks; 6using Microsoft.AspNetCore.Mvc; 7using Microsoft.EntityFrameworkCore; 8using Sample.Data; 9using Sample.Models; 10 11namespace Sample.Controllers 12{ 13 public class FruitsModelsController : Controller 14 { 15 16 private readonly MyDbContext _context; 17 18 public FruitsModelsController(MyDbContext context) 19 { 20 _context = context; 21 } 22 23 public async Task<IActionResult> Index() 24 { 25 return View(await _context.FruitsModels.ToListAsync()); 26 } 27 28 [HttpPost] 29 [ValidateAntiForgeryToken] 30 public async Task<IActionResult> Details(int? id) 31 { 32 if (id == null) 33 { 34 return NotFound(); 35 } 36 37 var FruitsDetail = await _context.FruitsModels.FirstOrDefaultAsync(m => m.Id == id); 38 if (FruitsDetail == null) 39 { 40 return NotFound(); 41 } 42 43 return View(FruitsDetail); 44 } 45 46 } 47} 48

View

1@model Sample.Models.FruitsModel 2 3~中略~ 4 5<table class="table" border="1"> 6 <tr> 7 <th> 8 @Html.DisplayNameFor(model => model.Id) 9 </th> 10 <th> 11 @Html.DisplayNameFor(model => model.Fruits) 12 </th> 13 <th> 14 </th> 15 </tr> 16 @foreach (var item in Model) 17 { 18 <tr> 19 <td> 20 @Html.DisplayFor(modelItem => item.Id) 21 </td> 22 <td> 23 @Html.DisplayFor(modelItem => item.Fruits) 24 </td> 25 <td> 26 <a asp-action="Details" asp-route-id="@item.Id">詳細</a> 27 </td> 28 </tr> 29 } 30 </table>

###分からないところ
MVC以外にも、変更や書き足すべきところがあるのか、
404や405が返ってきた時に、普通疑う場所はどの部分かなどを教えてほしいです。

よろしくお願いします。

補足情報

Visual Studio 2017 Community
Microsoft.AspNetCore.All 2.2.8
Windows10 Pro 1909

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

[詳細]部分はリンクになっていて、各々の詳細情報が見られるようにしたいです。しかし実装しても405が返ってきてページが表示されません。

そのリンクは多分 a 要素でクリックすると GET 要求になると想像してますが、そうであれば、要求先の Details アクションメソッドには [HttpPost] が付与されているので、結果 405 エラー(メソッドは許可されません)になったのだと思います。

投稿2021/02/17 03:06

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K-actus

2021/02/17 04:08

迅速な回答、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問