前提・実現したいこと
いつもお世話になっております。ASP.NET mvc5 掲示板を作っている初学者です。
現在、Ajax機能を用いてボタンをクリックした際にボタン名に合致するカテゴリーごとにソートする機能を実装していたところ、データではなくSQL文が表示されてしまう問題が発生したため質問を投稿しました。ボタンを表示した際にSQL文ではなくソートをかけたデータが表示される実装を実現したいです。
発生している問題・エラーメッセージ
ALLと記されたボタンをクリックするとSQL文が表示されてしまします。これをSQL文ではなくデータを表示するようにしたいです。
該当のソースコード
View
c#
1 @using (Ajax.BeginForm("Topics", new AjaxOptions() 2 { 3 UpdateTargetId = "TopicList" 4 })) 5 { 6 <input type="submit" name="All" value="ALL" /> 7 <input type="submit" name="Turf" value="芝" /> 8 } 9 <div> 10 <span id="TopicList"></span> 11 </div> 12
Controller
c#
1 // GET: NewTopics 2 // ページを開いた際にまず全件表示する 3 public async Task<ActionResult> Index() 4 { 5 6 var Topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions); 7 return View(await Topics.ToListAsync()); 8 } 9 10 public IQueryable Topics(string All, string Turf) 11 { 12 var topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions); 13 if (All != null) 14 { 15 // Allが押された場合の処理 16 topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions); 17 } 18 19 if (Turf != null) 20 { 21 // 芝が押された場合の処理 22 topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions).Where(t => t.CategoryId == 1); 23 } 24 25 26 return topics; 27 }
追記 試したこと
public IQueryable Topics(string All, string Turf){}ではQueryの実行がされないため、返り値にはSQL文が出るという旨の指摘をいただいたので試してみたのですが、List形式で実行しようと最後の2行として2種類を試みましたが、なぜどちらともにエラーが出るのかわからないです。お手数ですが、添削いただけるとありがたいです。
c#
1 public async Task<ActionResult> Topics(string All, string Turf) 2 { 3 4 var topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions); 5 if (All != null) 6 { 7 // Allが押された場合の処理 8 topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions); 9 } 10 11 if (Turf != null) 12 { 13 // 芝が押された場合の処理 14 topics = db.Topics.Include(t => t.AspNetUsers).Include(t => t.Categories).Include(t => t.Regions).Where(t => t.CategoryId == 1); 15 } 16 // ここから2行どちらともがエラーになります。 17 var result = await Topics.ToListAsync(); // ToArrayAsync()? 18 return topics.ToListAsync; 19 }
参考にしたサイト
Ajax.BeginFormの簡単な使い方
http://happyskiing.blog89.fc2.com/blog-entry-9.html
補足情報(FW/ツールのバージョンなど)
VS2017
Windows7
.Net Framework 4.6.1
MVC5
回答3件
あなたの回答
tips
プレビュー