とても困惑している。ここで、iは無いつもりですAZ。ここで私はあなたにいくつかの始まりを与えています。ソリューションの半分は私が提供しており、残りの部分を自分で行うことができます。
まず、コードにスペルチェックの問題があります。クラスキーワードは小文字にする必要があります。また、外部キー参照の作成には同じIDを使用する必要があります。 (アプリケーションクラスに主キーとしてApplicantIdがある場合は、アプリケーションクラスで同じスペルを使用する必要があります。エンティティフレームワークのコードは、そのような同じ名前が見つかると外部キー関係を作成します)。
「インデックス」と呼ばれるアクションを作成し、すべての欠員を一覧表示するには、あなたがこの
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; }
}
ようDBContext
クラスを持っていると仮定すると
public ActionResult Index()
{
YourDBContext db = new YourDBContext();
var allVacancies = db.Vacancies.ToList();
return View(allVacancies);
}
は、だから我々は我々が必要とするこのアクションのビューを持っている必要がありますすべての空席情報を表示します。だから、強く私たちはいくつかのAjaxの呼び出しを行うために使用されますjQuery
ライブラリの参照を含め、このビューでは、この
@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>
のような空孔モデルのコレクションにタイプされたインデックスビューを追加します。同じページの選択された空席情報について、アプリケーション情報を表示するajaxを使用する必要があります。このためには、空きIDをパラメータとしてJob Controller内のGetApplications
という別のアクションにasynchronous
リクエストを行います。利用可能なすべての空席情報をループし、ここにアンカータグを作成しています。
ジョブコントローラに戻って、このようなGetApplications
というアクションメソッドを作成します。理解することはかなり明確である
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>
}
ストレートフォワード!結果をループで印刷するだけです。
それです。それは動作するはずです。 vacancyリンクをクリックすると、GetApplicationsメソッドをidパラメータとして呼び出し、そのアクションメソッドはHTMLマークアップ付きのビューを返し、その空きIDのすべてのアプリケーションを一覧表示します。
これを実行すると、2番目の部分を自分で作成することができます。それは同じ論理です。データを返す同様のGetApplicantsアクションメソッドを作成する必要があります。 グッドラック
注:使用Firebug
/fiddler
(アヤックス)の要求がどのようなパラメータを持つアクションメソッドしようとしているかを確認します。これは、どのように動作するかを理解するのに役立ちます。
*正確に*あなたは取得していません。これは "私はプログラミングの仕事を持っている、私のためにやってください"のように聞こえる。あなたの以前の質問は、同様にあいまいで、下落して最終的に閉鎖されました。 Stack Overflowで有意義な助けを得ることを望むなら、あなたの仕事(あるいはあなたの質問に少なくとも)にもっと力を入れなければなりません。 –
通常のSQLクエリ (select * from Application where VacancyID = 123)(私はこれをPHPで使用します) この環境で関連するデータを取得する方法がわかりません。 –
デフォルトでは、Entity FrameworkはLazy読み込み中、関連するデータがDBからオンデマンドで取り出されます。たとえば、空き状態で、そのプロパティはまだ読み込まれていない、それは自動的にオンザフライで読み込まれます。あなたの質問は、あなたが「何も得ていない」ことを知るのに十分ではありません。 –