ここにいる誰かにAZからコーディングしてほしくないことは間違いありません。だからここで私はあなたにいくつかの出発点を与えています。私が提供しているソリューションの半分は、残りは自分で行うように任せています。
まず第一に、コードにいくつかのスペルの問題があります。クラスキーワードは小文字にする必要があります。また、外部キー参照の作成には同じIDを使用する必要があります。(アプリケーションクラスに主キーとしてApplicantIdがある場合は、Applicationsクラスで同じスペルを使用する必要があります。エンティティフレームワークコード-最初に、そのような同じ名前が表示されたときに外部キー関係を作成します)。
DBContext
あなたがこのようなクラスを持っていると仮定すると
public class YourDBContext:DbContext
{
public DbSet<EFCodeFirst.Models.Vacancy> Vacancies { set; get; }
public DbSet<EFCodeFirst.Models.Applicant> Applicants { set; get; }
public DbSet<EFCodeFirst.Models.Application> Applications { set; get; }
}
すべての欠員を一覧表示するには、「インデックス」というアクションを作成します
public ActionResult Index()
{
YourDBContext db = new YourDBContext();
var allVacancies = db.Vacancies.ToList();
return View(allVacancies);
}
したがって、すべての欠員を表示する必要があるこのアクションのビューが必要です。したがって、このような空席モデルのコレクションに強く型付けされたインデックスビューを追加します
@model IEnumerable<EFCodeFirst.Models.Vacancy>
<h2> All Vacancies </h2>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<div id="divVacancies">
@foreach (var vacancy in Model)
{
<p> @Html.ActionLink(vacancy.VacancyID.ToString(), "GetApplications","Job", new { @id = vacancy.VacancyID }, new { @class = "ajaxLink" })</p>
}
</div>
<div id="divApplications"></div>
<script type="text/javascript">
$(function () {
$(".ajaxLink").click(function (e) {
e.preventDefault();
var target = $(this).attr("href");
$("#divApplications").load(target);
});
});
</script>
このビューには、jQuery
いくつかのajax呼び出しを行うために使用するライブラリのリファレンスが含まれています。同じページで選択した空室のアプリケーション情報を表示するajaxを使用する必要があります。このために、空席IDをパラメーターとして使用して、ジョブコントローラー内でasynchronous
呼び出される別のアクションを要求します。GetApplications
利用可能なすべての空席をループし、そのためのアンカータグをここで作成しているだけです。
Job Controllerに戻り、次のGetApplications
ようなActionメソッドを作成します。
public ActionResult GetApplications(int id)
{
SampleContext db = new SampleContext();
var allApplications = db.Applications.Where(x => x.VacancyID == id).ToList();
return View(allApplications);
}
これは非常に明確に理解できます。選択した必要要員のすべてのアプリケーションを取得するためにクエリを実行しています。これをビューに戻します。したがってGetApplications.cshtml
、以下のコンテンツで呼び出されるビューを作成する必要があります。
@model IEnumerable<EFCodeFirst.Models.Application>
<h2>Applications </h2>
@foreach (var application in Model)
{
<p> @Html.ActionLink(application.ApplicantID.ToString(), "GetApplicants", new { @id = application.VacancyID, @class = "ajaxLink" })</p>
}
まっすぐ進む!結果をループで出力するだけです。
それだ。動作するはずです。空室リンクをクリックするたびに、パラメータとしてidを使用してGetApplicationsメソッドが呼び出され、そのアクションメソッドは、その空室IDのすべてのアプリケーションを一覧表示するHTMLマークアップを含むビューを返します。
これを行うと、2番目の部分を自分で作成できるようになります。それは同じ論理です。データを返す同様のGetApplicantsアクションメソッドを作成する必要がある場合があります。幸運を
注:Firebug
/fiddler
を使用して、どの(ajax)リクエストがどのパラメーターでアクションメソッドに送信されるかを確認します。これは、それがどのように機能するかを理解するのに役立ちます。