-1

私は次のものを持っています:

public Class Vacancy{
   public int VacancyID {get;set;}
   public List<Application> Applications {get;set;}
}
public Class Applicant{
   public int ApllicantID {get;set;}
   public List<Application> Applications {get;set;}
}
public Class Application{
   public int ApplicationID {get;set;}
   public int VacancyID {get;set;}
   public int ApplicantID {get;set;}
   public virtual Applicant Applicant {get;set;}
   public virtual Vacancy Vacancy {get;set;}
 }

次に、欠員モデルのコントロールを作成しました。やりたいこと: 1) すべての求人を表示する 2) 求人が選択されたときに、同じページにその応募のリストを表示したい 3) 前のステップから応募が選択されたときに、応募者の詳細を取得したい これを使用しようとしましたチュートリアル http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc -アプリケーションです が、どこにも行きません。壁にぶつかり、とても混乱しています。

4

1 に答える 1

3

ここにいる誰かに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)リクエストがどのパラメーターでアクションメソッドに送信されるかを確認します。これは、それがどのように機能するかを理解するのに役立ちます。

于 2012-05-10T16:09:41.277 に答える