あなたが望むようにそれを行うには良い方法ではありません(元の投稿で)。ビューには常にビュー モデルが必要です。ビューモデルは、ビューに表示したいデータのみを表し、それ以上でもそれ以下でもありません。domail モデルをビューに渡すのではなく、ビュー モデルを使用してください。このビュー モデルには、ドメイン モデルのプロパティの一部のみが含まれている場合があります。
リスト ビューにはおそらくグリッドがあり、各行の横にはおそらく詳細リンクまたは名前へのリンク (お持ちのとおり) があります。これらのリンクのいずれかをクリックすると、詳細ビューが表示されます。この詳細ビューには、詳細ビューに表示する必要があるプロパティのみを含む独自のビュー モデルがあります。
domail モデルは次のようになります。
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
public string ExampleProperty1 { get; set; }
public string ExampleProperty2 { get; set; }
public string ExampleProperty3 { get; set; }
}
人のID、名、姓、年齢のみを表示したい場合、ビューモデルは次のようになります。
public class PersonDetailsViewModel
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
ExampleProperty1、ExampleProperty2、および ExampleProperty3 は必要ないため、必要ありません。
個人コントローラーは次のようになります。
public class PersonController : Controller
{
private readonly IPersonRepository personRepository;
public PersonController(IPersonRepository personRepository)
{
// Check that personRepository is not null
this.personRepository = personRepository;
}
public ActionResult Details(int id)
{
// Check that id is not 0 or less than 0
Person person = personRepository.GetById(id);
// Now that you have your person, do a mapping from domain model to view model
// I use AutoMapper for all my mappings
PersonDetailsViewModel viewModel = Mapper.Map<PersonDetailsViewModel>(person);
return View(viewModel);
}
}
これでもう少し問題が解決することを願っています。