を使用Interface
して 2 つのモデルに実装します。これはまさに、それらが使用される種類のものです。
以下は、両方ともインターフェースを実装する 2 つの異なるモデルを使用する 2 つの異なるビューの例です。これは、アドホック ポリモーフィズムではなく、サブタイピングです。
public class ViewModelOne : IReusableView
{
public string Name { get; set; }
public string Something { get; set; }
public int ANumber { get; set; }
}
public class ViewModelTwo : IReusableView
{
public string Name { get; set; }
public string Thing { get; set; }
public string SomethingElse { get; set; }
public int ANumber2 { get; set; }
}
public interface IReusableView
{
string Name { get; }
}
ここには、'InnerPartialView' という非常に単純な部分ビューがあります。
@model TestIntegration.Models.IReusableView
<div>
@Model.Name
</div>
この例のコントローラーのホームページと about ページで使用されているもの:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
return View(new ViewModelOne() { Name = "hello", Something="sdfsdfs", ANumber = 1 });
}
public ActionResult About()
{
return View(new ViewModelTwo() { Name = "hello 2", SomethingElse = "aaaddd", ANumber2 = 10, Thing="rand" });
}
}
ホーム ビュー:
@model TestIntegration.Models.ViewModelOne
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
@Html.Partial("InnerPartialView")
</p>
アバウト ビュー:
@model TestIntegration.Models.ViewModelTwo
@{
ViewBag.Title = "About Us";
}
<h2>About</h2>
<p>
Put content here.
@Html.Partial("InnerPartialView")
</p>