MVCでは、バインドするグリッドビューはなく、Webフォームとは異なりviewstatesもありません。モデルパーツでは、モデル/ドメインモデルとは別のビューモデルを使用するようにモデルパーツを拡張することをお勧めします。
ビュー・モデルとは、データベースからのデータをより細かく制御できるようにするものです。以下のPersonViewModel
では、テーブルの主キーにマップされているPersonID
を除外することにしました。私はまた、人のフルネーム(姓、ファーストネーム)を返すフィールドを追加しました。これらの変更はビューモデルにのみ分離され、ドメインモデルには影響しません。 (データベーステーブル/列にマップすることができます)
モデル:(基本的にあなたのページに表示するかについてのより詳細に制御できます)
public class Person
{
[Key]
public Guid PersonID { get; set; }
public string Title { get; set; }
public string ForeName { get; set; }
public string SurName { get; set; }
public string TelNum { get; set; }
public string AddressString { get; set; }
}
のViewModel:
public class PersonViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string Telephone { get; set; }
public string Title { get; set; }
public string FullName
{
get { return string.Format("{0}, {1}", this.LastName, this.FirstName); }
}
}
コントローラドメインモデルからビューモデルにフィールドの値を転送することができます。簡単にするために、)私は手動でフィールドの値を割り当てるために選択したが、これを簡略化しAutoMapperようなツールがあります:あなたはビューモデルを表示したい
public ActionResult Index()
{
// returns List<Person> from the database
var peopleList = datasource.GetPeople();
var peopleVM = new List<PersonViewModel>();
//create a list of PersonViewModels
foreach (person in peopleList)
{
var personVM = new PersonViewModel()
{
FirstName = person.ForeName;
LastName = person.SurName;
Address = person.AddressString;
Title = person.Title;
Telephone = person.TelNum;
};
peopleVM.Add(personVM);
}
return View(peopleVM);
}
ビュー(「結合の概念は本当にありません。 」と箱から出しviewstates Webフォームではなく多くの組み込みコントロールgridviewsなどのような/あなたがtheseのようなMVCの拡張子)を使用しようとしている場合を除きリストビュー:良いリソースへのリンクについては
@model List<Namespace.Models.PersonViewModel>
<table>
@foreach (person in Model)
{
<tr>
<td>person.FullName</td>
<td>person.Title</td>
<td>person.Telephone</td>
<td>person.Address</td>
</tr>
}
</table>
を、することができます」 this siteとthis one tooで間違っています。
なぜ落選ですか?質問をする前に答えを知っていたのですか? – Molenpad