2つの異なるページで共有されるビューモデルがあります。ビューモデルは、1つのプロパティ(アドレス)を除いて、かなり似ています。ビューモデルには、名前と場所フィールドが含まれます。ただし、顧客ビューのアドレスラベルには「Customer Address」と表示され、従業員ビューのアドレスラベルには「Employee Address」と表示されます。また、さまざまなエラーメッセージが表示されます。ASP.NET MVC 3でのベースビューモデルのプロパティのオーバーライド
は、ここで私が達成しようとしているものの簡易版です。
public class BaseLocation
{
[Display(Name="Your Name")]
public string Name {get;set;}
public virtual string Address {get;set;}
}
public class CustomerLocation : BaseLocation
{
[Display(Name="Customer Address")]
public override string Address {get;set;}
}
public class EmployeeLocation : BaseLocation
{
[Display(Name="Employee Address")]
public override string Address {get;set;}
}
は、それから私は、のようなので、基本場所の部分を作成しました:
最後に@model BaseLocation
***ASP.NET MVC Helpers here: labels, text, validation, etc.
を、お客様にと従業員のページでは、私は部分を呼び出し、サブクラス化された型を送信します。
Customer.cshtml
@model CustomerLocation
@Html.Render("_BaseLocation", Model)
Employee.cshtml
@model EmployeeLocation
@Html.Render("_BaseLocation", Model)
結果、特定のタイプのデータ属性は表示されません。たとえば、顧客ページでは、「顧客アドレス」の代わりに「住所」のラベルを取得します。
共有ビューモデル内の1つのプロパティが異なるラベルとエラーメッセージを持つ必要があるため、特定のタイプごとに同じデータで2つの部分データを作成するのではなく、これについてはどうすればいいですか?ありがとう。
何か変更があるかどうかを確認してください。 – gdoron
@godon、それは何も変更されません。 –
@DarinDimitrovだから、私が考えることができる唯一の方法は、仕事を正しく行うあなた自身の 'HtmlHelper'を書くことです。 – gdoron