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

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

新規登録して質問してみよう
ただいま回答率
85.35%
C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

ASP.NET

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

Q&A

解決済

1回答

2246閲覧

【Mac環境】VisualStudio(C#)でMySQLをWebページに表示できない「Error CS1579: @foreach (var item in Model)」

Risney

総合スコア148

C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

ASP.NET

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

0グッド

0クリップ

投稿2021/09/29 05:32

編集2021/09/30 03:01

前提・実現したいこと

環境:VisualStudio for Mac
言語:C#
実現したいこと:MySQLの内容をWebページに表示したい

以下記事参考に作成しています。
macOS環境でASP.NET COREのWEBアプリをMySQLに接続した
MacでASP.NET Core + EntityFramework Core + MySQL な開発を行う方法
【C#】ASP.NET CoreでMySQLを利用する(MySQL接続設定編)②

エラーを元に引き続き自分でも調べていきますが、
解決方法がわかる方いたらご教示いただけると幸いです。
宜しくお願いいたします。

発生している問題・エラーメッセージ

UserList.cshtml(MySqlの内容をを表示したいページ)にて以下エラー

error

1Error CS1579: foreach statement cannot operate on variables of type 'User' because 'User' does not contain a public instance or extension definition for 'GetEnumerator' (CS1579)

プロジェクト作成手順と該当のソースコード

1: NET Core > アプリ > ASP.NET Core Web App (MVC) で「PassManager」プロジェクト新規作成
2: NuGet パッケージのインストール(補足情報参照)
3: Modelsフォルダの中にUser.csを作成

User

1namespace PassManager.Models 2{ 3 public class User 4 { 5 public int Id { get; set; } 6 public string Userid { get; set; } 7 public string Name { get; set; } 8 } 9}

4: Modelsフォルダの中にUserContext.csを作成

UserContext

1namespace PassManager.Data 2{ 3 public class UserContext : DbContext 4 { 5 6 public UserContext(DbContextOptions options) : base(options) 7 { 8 } 9 10 public DbSet<User> Users { get; set; } 11 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 12 { 13 optionsBuilder.UseMySql( 14 "server=localhost;user=username;password=pass;database=pass_manager;", 15 new MySqlServerVersion(new Version(8, 0, 11)) 16 ); 17 } 18 } 19}

5: appsettings.json に以下コード追加

app

1 "ConnectionStrings": { //追加 2 "DefaultConnection": "server=localhost;userid=username;database=pass_manager;" 3 },

6: Startup.cs のpublic void ConfigureServices内を以下に変更

Startup

1public void ConfigureServices(IServiceCollection services) 2 { 3 services.AddControllersWithViews(); 4 services.AddMvc(); 5 services.AddDbContext<UserContext>(options 6 => options.UseMySql(ConfigurationSection("DefaultConnection"))); 7 } 8 //↑DefaultConnectionエラー回避の為のメソッド 9 private ServerVersion ConfigurationSection(object defaultConnection) 10 { 11 throw new NotImplementedException(); 12 }

※参考にしたページでは以下のコードでしたが、エラーが出たので上記の方法でエラー回避しています。
options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));

7: データベースの確認
作成済みであることを確認します
・内容
DB1
・構造
DB2

8: Controllersフォルダの中にUsersController.cs を作成

UsersController

1namespace PassManager.Controllers 2{ 3 public class UsersController : Controller 4 { 5 public IActionResult UserList() 6 { 7 return View(); 8 } 9 } 10}

9: Views>Homeフォルダの中のUserList.cshtml を修正

UserList

1@model IEnumerable<PassManager.Models.User> 2 3<html lang="ja"> 4<head> 5 <meta name="google-signin-scope" content="profile email"> 6 <meta name="google-signin-client_id" content="123abc.apps.googleusercontent.com"> 7 <script src="https://apis.google.com/js/platform.js" async defer></script> 8</head> 9<body> 10 <h1>@ViewData["Title"]</h1> 11 12 @*ログアウトボタンタップ時の挙動*@ 13 <script>function signOut() { 14 var auth2 = gapi.auth2.getAuthInstance(); 15 auth2.signOut().then(function () { 16 console.log('User signed out.'); 17 }); 18} 19 20 @* ログイン画面と別ページにログアウトボタンがある場合はgapi.auth2ライブラリを手動でロードして初期化する必要がある *@ 21 function onLoad() { 22 gapi.load('auth2', function () { 23 gapi.auth2.init(); 24 }); 25 }</script> 26 27 @*ロクアウトボタンタップ時にHOME画面に戻る*@ 28 <a href="https://localhost:5001/Home" onclick="signOut();">Sign out</a> 29 <script src="https://apis.google.com/js/platform.js?onload=onLoad" async defer></script> 30 31 <p> 32 <a asp-action="Create">Create New</a> 33 </p> 34 35 <table class="table"> 36 <thead> 37 <tr> 38 <th> 39 @Html.DisplayNameFor(model => model.Id) 40 </th> 41 <th> 42 @Html.DisplayNameFor(model => model.Userid) 43 </th> 44 <th> 45 @Html.DisplayNameFor(model => model.Name) 46 </th> 47 <th></th> 48 </tr> 49 </thead> 50 <tbody> 51 @foreach (var item in Model) ///////////// ここでエラー ///////////// 52 { 53 <tr> 54 <td> 55 @item.Id 56 </td> 57 <td> 58 @item.Userid 59 </td> 60 <td> 61 @item.Name 62 </td> 63 <td> 64 <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | 65 <a asp-action="Details" asp-route-id="@item.Id">Details</a> | 66 <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> 67 </td> 68 </tr> 69 } 70 </tbody> 71 </table> 72</body> 73</html>

試したこと①

stackoverflow参考に修正
参考:foreach (var item in Model), Object reference not set to an instance of an objec

・UsersController.csの修正

UsersController

1namespace PassManager.Controllers 2{ 3 public class UsersController : Controller 4 { 5 public ActionResult MyUserList()//このメソッドの中を入れ替えた 6 { 7 User obj = new() 8 { 9 MyUserList = new List<User>()// Load your list using uery 10 }; 11 return View(obj); 12 } 13 } 14}

・Users.csの修正

Users

1using System; 2using System.Collections.Generic; 3 4namespace PassManager.Models 5{ 6 public partial class User 7 { 8 public int Id { get; set; } 9 public string Userid { get; set; } 10 public string Name { get; set; } 11 public List<User> MyUserList { get; set; } //追加した 12 } 13}

・UsersList.cshtmlの修正
ModelからModel.MyUserListへ変更

UsersList

1@foreach (var item in Model.MyUserList)

ビルド成功するが、ページ表示時に以下エラー

error

1An unhandled exception occurred while processing the request. 2 3NullReferenceException: Object reference not set to an instance of an object. 4AspNetCore.Views_Home_UserList.<ExecuteAsync>b__13_1() in UserList.cshtml, line 54

試したこと②

公式ドキュメントを参考にMvcMovieアプリを作成するが以下コマンド時にエラー

dotnet-aspnet-codegenerator controller -name MoviesController -m Movie -dc MvcMovieContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries -sqlite

error1

1warning MSB3026: "obj/Debug/netcoreapp3.1/MvcMovie.pdb" を "bin/Debug/netcoreapp3.1/MvcMovie.pdb" にコピーできませんでした。1000 ミリ秒以内に 1 回目の再試行を開始します。The process cannot access the file '/Users/lcr038/Desktop/MvcMovie/MvcMovie/bin/Debug/netcoreapp3.1/MvcMovie.pdb' because it is being used by another process. [/Users/lcr038/Desktop/MvcMovie/MvcMovie/MvcMovie.csproj]

error2

1/usr/local/share/dotnet/sdk/5.0.401/Microsoft.Common.CurrentVersion.targets(4569,5): error MSB3021: ファイル "obj/Debug/netcoreapp3.1/MvcMovie.pdb" を "bin/Debug/netcoreapp3.1/MvcMovie.pdb" にコピーできません。The process cannot access the file '/Users/lcr038/Desktop/MvcMovie/MvcMovie/bin/Debug/netcoreapp3.1/MvcMovie.pdb' because it is being used by another process. [/Users/lcr038/Desktop/MvcMovie/MvcMovie/MvcMovie.csproj]

補足情報(FW/ツールのバージョンなど)

■ ツールバージョン

version

1=== Visual Studio Community 2019 for Mac === 2Version 8.10.9 (build 3) 3 GTK+ 2.24.23 (Raleigh theme) 4 Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638) 5 Package version: 612000140 6 7=== Mono Framework MDK === 8Runtime: 9 Mono 6.12.0.140 (2020-02/51d876a041e) (64-bit) 10 Package version: 612000140 11 12=== Roslyn (Language Service) === 133.10.0-4.21269.26+029847714208ebe49668667c60ea5b0a294e0fcb 14 15=== NuGet === 16バージョン: 5.9.0.7134 17 18=== .NET Core SDK === 19SDK バージョン: 20 5.0.401 21 5.0.400 22 3.1.413 23 3.1.412 24 25=== .NET Core ランタイム === 26ランタイム: /usr/local/share/dotnet/dotnet 27ランタイム バージョン: 28 5.0.10 29 5.0.9 30 3.1.19 31 3.1.18 32 33=== .NET Core 3.1 SDK === 34SDK: 3.1.413 35 36=== Xamarin.Profiler === 37バージョン: 1.6.15.68 38 39=== Updater === 40バージョン: 11 41 42=== Apple Developer Tools === 43Xcode 13.0 (19234) 44 45=== Xamarin.Mac === 46Version: 7.14.0.24 (Visual Studio Community) 47 48=== Xamarin.Android === 49バージョン: 11.3.0.4 (Visual Studio Community) 50SDK Tools のバージョン: 26.1.1 51SDK プラットフォーム ツールのバージョン: 30.0.4 52SDK ビルド ツールのバージョン: 30.0.2 53 54ビルド情報: 55Mono: b4a3858 56Java.Interop: xamarin/java.interop/d16-10@f39db25 57ProGuard: Guardsquare/proguard/v7.0.1@912d149 58SQLite: xamarin/sqlite/3.35.4@85460d3 59Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-10@c5732a0 60 61=== Microsoft OpenJDK for Mobile === 62Java SDK: /Users/lcr038/Library/Developer/Xamarin/jdk/microsoft_dist_openjdk_1.8.0.25 631.8.0-25 64 65=== Android SDK Manager === 66Version: 16.10.0.13 67 68=== Android Device Manager === 69Version: 16.10.0.15 70 71=== Operating System === 72Mac OS X 10.16.0 73Darwin 20.6.0 Darwin Kernel Version 20.6.0

■ NuGet関連情報
MySQL.Data.EntityFrameworkCoreでは上手くいかないのでPomelo.EntityFrameworkCore.MySqlを使う
また、上記は共存不可。
イメージ説明

■ DB確認ツール
Mac対応のSequel Aceというアプリを使っています

■ アプリの構造
HOME画面でGoogleログイン後、(ログイン画面のソースコードは省略)
UserList画面でpass_managerのテーブル内容が表示される想定です。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/29 05:57

余計なお世話を承知で一言・・・ Mac を使うのは止めて、自分に投資する意味で Windows 10 の PC を買って Windows 用の Visual Studio Commnunity 2019 をインストールして使う・・・なんてわけにはいかないのでしょうか?  > MySQL.Data.EntityFrameworkCoreでは上手くいかないのでPomelo.EntityFrameworkCore.MySqlを使う と書いてありましたが、 Windows 用の Visual Studio Commnunity 2019 が使えれば、そういう余計なトラブルに余計な時間を取られないで済むと思うのですが。NuGet でインストールできる Oracle 製の MySql.Data.EntityFrameworkCore v8.0.20 を使って実装した例はありますよ。 ASP.NET Identity で MySQL 利用 (CORE) http://surferonwww.info/BlogEngine/post/2020/05/14/aspnet-core-identity-to-use-mysql.aspx サポートできる人も多々いるでしょうし。
Risney

2021/09/29 06:02

ご意見ありがとうございます。 おっしゃる通りWIndowsで開発できれば、 参考にできる記事も多くて進めやすいのかもしれませんが、 会社からMacしか支給されておらず、、、( ; ; )
退会済みユーザー

退会済みユーザー

2021/10/04 04:35 編集

では、とりあえず Mac だからという問題はないものと想像して・・・ やってることが変ですよ。UserList にはユーザー一覧を表示するのですよね? それなのになぜ View で、 @model ******PassManager.Models.User となっているのですか? Controller のコードも変ですし、ごく基本的なとことでさえ分かってやっているとは思えないのですが。
Risney

2021/09/30 00:42 編集

C#は触って1週間くらいなので基本的なことがわかっておらず、 何が変なのかも理解できていない状態です。すみません。 ViewもContlloerもその様にしたのは、 参考のサイトをそのまま参照したからです。。
退会済みユーザー

退会済みユーザー

2021/10/03 14:28

質問者さん、その後無言ですが、どうなったのでしょう? 社外秘が問題になった? ギブアップした? 事情はどうあれ無言で放置は NG です。クローズしてください。表題に「クローズした」と書くだけで自分は OK ですので。
Risney

2021/10/04 02:23 編集

問題は解決しておらず対応中ですが、社外秘が問題になり、質問削除依頼中です。 色々お力になっていただいているのに大変申し訳ありません。
退会済みユーザー

退会済みユーザー

2021/10/04 02:27

削除されたら私の回答・レスも一緒になくなってしまうのですが、そこは理解していますか?
Risney

2021/10/04 02:33

理解しております。 全てメモに残させていただいております。
退会済みユーザー

退会済みユーザー

2021/10/04 03:33

いえいえ、理解してないですよ。このスレッドが質問者さん専用の Q&A の場であればそれで済むかもしれませんが、Teratail は、 https://teratail.com/help/question-tips "teratailは技術に興味のある人達が集まって、質問と回答を通してお互いに知識や情報を交換・共有する場所です" とのことで、情報を蓄積して、後で検索などで訪れた人にも有用な情報を提供することも目的にしているそうです。なのに質問者さんの都合だけで勝手に削除するというのは許されない話だと思います。(事情は理解しますが)
Risney

2021/10/04 03:56 編集

おっしゃる通りですね。 情報として有用なのであれば、 違うコードで情報を再投稿いたします。
退会済みユーザー

退会済みユーザー

2021/10/04 23:24

> 違うコードで情報を再投稿いたします。 それはしなくて結構ですので、とにかくこのスレッドをクローズしてください。 その後削除するかどうかは運営次第。
Risney

2021/10/08 03:47

承知しました。 色々とありがとうございました。
guest

回答1

0

ベストアンサー

Mac 版 Visual Studio は触ったこともないのですが、とりあえず Mac だからという問題はないものと想像して・・・

やってることが変ですよ。UserList にはユーザー一覧を表示するのですよね? それなのになぜ View で、

@model PassManager.Models.User

となっているのですか? 一覧を表示するなら Controller から View に渡すのは List<PassManager.Models.User> になるはずで、スキャフォールディング機能を使って View を自動生成すると、

@model IEnumerable<PassManager.Models.User>

になるはずです。

Controller のコードも変です。質問のコードの return View(obj); の obj は List<PassManager.Models.User> 型でなければならないのですが、質問のコードの obj はそうはなってないですよね?

一度以下のチュートリアルに従って作ってみてはいかがですか? スキャフォールディング機能を使って CRUD 操作を行うのに必要なコードが一式自動生成されます。それを見ればどうあるべきかはわかると思いますので。

ASP.NET Core MVC の概要
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/start-mvc?view=aspnetcore-5.0&tabs=visual-studio

パート 4、ASP.NET Core MVC アプリにモデルを追加する
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/adding-model?view=aspnetcore-5.0&tabs=visual-studio

自動生成された Controller / Action Method / View のコードを以下に記載しておきます。

Controller / Action Method

DB からデータを抽出して List<Movie> オブジェクト作り、それを View に渡しているところに注目。

using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using MvcMovie.Data; using MvcMovie.Models; namespace MvcMovie.Controllers { public class MoviesController : Controller { private readonly MvcMovieContext _context; public MoviesController(MvcMovieContext context) { _context = context; } // GET: Movies public async Task<IActionResult> Index() { return View(await _context.Movie.ToListAsync()); } // ・・・ Details, Create, Edit, Delete 関係は省略・・・ } }

View

Controller / Action Method から渡されるのは IEnumerable<Movie> 型のオブジェクトと想定しているところに注目。

@model IEnumerable<MvcMovie.Models.Movie> @{ ViewData["Title"] = "Index"; } <h1>Index</h1> <p> <a asp-action="Create">Create New</a> </p> <table class="table"> <thead> <tr> <th> @Html.DisplayNameFor(model => model.Title) </th> <th> @Html.DisplayNameFor(model => model.ReleaseDate) </th> <th> @Html.DisplayNameFor(model => model.Genre) </th> <th> @Html.DisplayNameFor(model => model.Price) </th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.ReleaseDate) </td> <td> @Html.DisplayFor(modelItem => item.Genre) </td> <td> @Html.DisplayFor(modelItem => item.Price) </td> <td> <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | <a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </td> </tr> } </tbody> </table>

実行結果は以下のようになります:

イメージ説明

投稿2021/09/29 07:01

編集2021/09/30 04:55
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Risney

2021/09/29 07:06

@modelのところは自分の記載ミスでした。 大変申し訳ありません。 参考にさせて頂きながらコード修正いたします。 その他の部分もご指摘ありがとうございます。 修正後に質問内容に追記・修正いたします。
Risney

2021/09/29 09:32

公式ドキュメントを見ながら新規で作成しましたが、 他のエラーが表示されたので、解析中です。 (質問に追記した試したこと②参照) ### 試したこと③ SurferOnWww様からのご指摘頂いた内容を参考にコード修正してみましたが、 エラー内容変わらずでした。 その他に問題があるのかもしれません。。 8: UsersController.cs ```UsersController namespace PassManager.Controllers { public class UserController : Controller { private readonly UserContext _context; public UserController(UserContext context) { _context = context; } public async Task<IActionResult> Index() { return View(await _context.Users.ToListAsync()); } } } ``` 9: UserList.cshtml ```UserList @model IEnumerable<PassManager.Models.User> @{ ViewData["Title"] = "index"; } --------------------------------省略-------------------------------- <p> <a asp-action="Create">Create New</a> </p> <table class="table"> <thead> <tr> <th> @Html.DisplayNameFor(model => model.Id) </th> <th> @Html.DisplayNameFor(model => model.Userid) </th> <th> @Html.DisplayNameFor(model => model.Name) </th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.Id) </td> <td> @Html.DisplayFor(modelItem => item.Userid) </td> <td> @Html.DisplayFor(modelItem => item.Name) </td> <td> <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | <a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </td> </tr> } </tbody> </table> </body> </html> ``` 引き続き調べてみます。
退会済みユーザー

退会済みユーザー

2021/09/29 23:01

> 質問に追記した試したこと②参照 以下の記事のようなバージョンの選択に問題があるということはないですか? https://teratail.com/questions/359529 Mac 特有の話で、Mac ではチュートリアルのようにできないと言うことでしょうか? > 試したこと③ それも回答欄に追記してください。 > エラー内容変わらずでした 同じエラーになるはずはありません。
Risney

2021/09/30 00:20

>以下の記事のようなバージョンの選択に問題があるということはないですか? 以下バージョンがはいっているので問題ない認識です。 .NET Core SDK SDK: /usr/local/share/dotnet/sdk/5.0.401/Sdks SDK バージョン: 5.0.401 5.0.400 3.1.413 3.1.412 MSBuild SDK: /Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/bin/MSBuild/Current/bin/Sdks .NET Core ランタイム ランタイム: /usr/local/share/dotnet/dotnet ランタイム バージョン: 5.0.10 5.0.9 3.1.19 3.1.18 .NET Core 3.1 SDK SDK: 3.1.413 >Mac 特有の話で、Mac ではチュートリアルのようにできないと言うことでしょうか? Mac特有の話か、自分の理解不足なのかはわかりませんが、現状できていないです。 >それも回答欄に追記してください。 上記コメントに記載した通りです。 質問内容には文字オーバーで追記できませんでした。 >同じエラーになるはずはありません。 試したこと①と同じエラー内容でした。失礼しました。 NullReferenceException: Object reference not set to an instance of an object. AspNetCore.Views_Home_UserList.<ExecuteAsync>b__13_1() in UserList.cshtml + @foreach (var item in Model)
退会済みユーザー

退会済みユーザー

2021/09/30 00:26

> 以下バージョンがはいっているので問題ない認識です。 SDK とランタイムのバージョンの話ではないです。プロジェクトのプラットフォームと NuGet パッケージのバージョンの問題です。
Risney

2021/09/30 00:33

>プロジェクトのプラットフォームと NuGet パッケージのバージョンの問題です こちらのことででしょうか。 Visual Studio Community 2019 for Mac Version 8.10.9 (build 3) GTK+ 2.24.23 (Raleigh theme) Xamarin.Mac 6.18.0.23 (d16-6 / 088c73638) Package version: 612000140 NuGet バージョン: 5.9.0.7134
退会済みユーザー

退会済みユーザー

2021/09/30 00:58

> こちらのことででしょうか。 違います。Mac の Visual Studio でプロジェクトを作成するとき対象のフレームワーク(.NET Core 3.1 とか .NET 5.0 とか)を選択できるようになってませんか? それと NuGet パッケージ Microsoft.EntityFrameworkCore.Design のバージョンのことを言ってます。 紹介したスレッドを読んでますか?
退会済みユーザー

退会済みユーザー

2021/09/30 01:18 編集

> 試したこと①と同じエラー内容でした。失礼しました。 > NullReferenceException: Object reference not set to an instance of an object. > AspNetCore.Views_Home_UserList.<ExecuteAsync>b__13_1() in UserList.cshtml + @foreach (var item in Model) ということは、たぶん Model が null で、コントローラーのアクションメソッド Index の View の引数 await _context.Users.ToListAsync() が null だということでしょう。そこをデバッガを使って調べてください。 ・・・と思ったけど、アクションメソッドとビューの名前が変です。まずそこを調べてください。
Risney

2021/09/30 01:41

>Mac の Visual Studio でプロジェクトを作成するとき対象のフレームワーク(.NET Core 3.1 とか .NET 5.0 とか)を選択できるようになってませんか? .NET 5.0を選択しています。 >NuGet パッケージ Microsoft.EntityFrameworkCore.Designのバージョンのことを言ってます。 失礼しました。バージョンは以下の通りです Microsoft.EntityFrameworkCore.Design5.0.10 >ということは、たぶん Model が null で、コントローラーのアクションメソッド Index の View の引数 await _context.Users.ToListAsync() が null だということでしょう。そこをデバッガを使って調べてください。 ありがとうございます。 確認いたします。 そしてエラーの追記漏れしていました。 AspNetCore.Views_Home_UserList.ExecuteAsync() in UserList.cshtml + ViewData["Title"] = "Index";
退会済みユーザー

退会済みユーザー

2021/09/30 01:50

対象のフレームワークと Microsoft.EntityFrameworkCore.Design のバージョンの選択には問題なさそうですね。とすると、Mac 特有の何かがあって、Mac ではチュートリアルのようにできないと言うことでしょうか? とりあえず、チュートリアル通りに作るとどのような Controller / Action Method / View が生成されるかは回答欄に書きましたので、それを参考にしてください。 上のコメントで、 > アクションメソッドとビューの名前が変です。まずそこを調べてください。 と書きましたがそこは調べましたか? Action Method の名前が Index なら View は Index.cshtml になるはず。そこが変だと話が先に進みません。
Risney

2021/09/30 02:10

>Mac 特有の何かがあって、Mac ではチュートリアルのようにできないと言うことでしょうか? 特有の何かか、自分のミスかわからないので、再度ためしてみます。 >と書きましたがそこは調べましたか? いえ、これから調べます。
Risney

2021/10/08 07:11 編集

お手数おかけしてしまい大変申し訳ありませんでした。 今回の件で色々と学べたので次に活かします。 また何かあれば宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問