これは古い質問であり、すでに回答が受け入れられていることを認めます。しかし、私は同じ問題に遭遇し、それを解決することができたので、私の経験を共有したいと思います.
私が理解していることから、次のことが真実です。
- d2admin は Web サイトのフロント エンドを処理するコードであり、コントローラーはビューやビュー モデルを駆動するために使用されます。
- PartyWeb は、ドメイン レベルで API として使用され、一部のデータソースと対話します。
- OrganizationController は、データソースから d2admin プロジェクト (およびその逆) にデータを取得するために使用するコントローラーです。
そのすべてを念頭に置いて、部分ビューの力を生み出してください!
d2admin/Views/SomeController.cshtml にある非常に単純なビューを使用してみましょう。ここで、SomeController は、これらのビューに関連付けられたコントローラーを反映するフォルダーです。
<h3>A Very Basic View</h3>
@Html.Partial("_SomePartialView", OrganizationController.GetOrganizations())
このビューにはモデルがなく、パーシャルを呼び出し、そのモデルがすぐそこに取り込まれていることに注意してください...それだけです! _SomePartialView.cshtml はどのように記述すればよいでしょうか。
これを d2admin/Views/Shared フォルダーに配置するため、フル パスは d2admin/Views/Shared/_SomePartialView.cshtml になります。ファイルは次のようになります
@model IEnumerable<PartyWeb.Models.Organization>
<div>
@foreach(var o in Model){
@Html.DisplayFor(modelItem => item.Id)
@Html.DisplayFor(modelItem => item.Name)
<br/>
}
</div>
ご覧のとおり、このビューには、以下が PartyWeb/Models/Organization.cs にあるモデルであると仮定して、いくつかの基本的な情報が表示されます。
public class Organization
{
public int Id {get; set;}
public string Name {get; set;}
// some additional properties
}
最後に、
OrganizationController.cs 内で、部分ビューのモデルにデータをバインドできるようにする静的アクションを追加する必要があります。したがって、以下を追加します。
public class OrganizationController : ApiController
{
// Some Other Actions
[HttpGet]
public static List<Organization> GetOrganizations()
{
var dataSource = GetDataSource(); // Some Method that exposes the datasource
return ReadAllOrganizations(dataSource); // Some method that allows us to read all of the organiztions from the dataSource, i.e. some sql that executes against a database.
}
}