私はMVC3を初めて使用し、最初の小さなプロジェクトに取り組んでいます。Index()とGetData()の2つのアクションを持つHomeControllerがあります。インデックスは、インデックスビューを返すだけです。インデックスページがロードされたら、htmlボタンまたはボタンタイプの入力が必要です。このボタンをクリックすると、GetDataアクションを実行する必要があります。このアクションは、linqクエリに基づいてデータを選択し、リストを返します。次に、インデックスビュー自体で、クリックしたボタンの下に、リストをhtmlテーブルに入力する必要があります.....foreachループを使用することを想定しています。
これは機能しておらず、このMVCパターンの概念を明らかに誤解していると思います。
私のコントローラーコード:
private ReferenceDataContext data = new ReferenceDataContext();
public ActionResult Index()
{
return View();
}
public ActionResult GetData()
{
using (data)
{
var hosp = (from x in data.Hospitals
where x.HAcode == "Q36"
select x).ToList();
ViewData["hosp"] = hosp;
return RedirectToAction("Index");
}
}
私のビューコード:
@model IEnumerable<NursingHomes.Models.Hospitals>
@{
ViewBag.Title = "Hospitals Verify";
}
<br />
<br />
@using (Html.BeginForm("GetData", "Home"))
{
<input type="submit" value="Submit" title="Get Data" />
<h2>Nursing Homes</h2>
<table>
<tr>
<th>Code</th>
<th>HAcode</th>
<th>Name</th>
</tr>
@foreach (NursingHomes.Models.Hospitals item in (List<NursingHomes.Models.Hospitals>) ViewData["hosp"])
{
<tr>
<td>
@Html.DisplayFor(modelItem=>item.Code)
</td>
<td>
@Html.DisplayFor(modelItem=>item.HAcode)
</td>
<td>
@Html.DisplayFor(modelItem=>item.Name)
</td>
</tr>
}
</table>
}
私は上記で何か間違ったことをしていますか?これは、JQueryを使用しないと単純に不可能ですか?
基本的な質問は、[インデックス]ページでそのボタンをクリックし、GetDataアクションを実行して、GetDataアクションから返されたリストを使用してボタンの下にテーブルを作成するように指示する方法です。