Tim*_*non 7 c# asp.net-mvc partial-views viewbag
让我们考虑两个使用相同布局的视图:
而不是两次定义正确的部分,我想知道我是否可以创建一个PartialView直接从布局页面链接.
问题是部分视图从正在呈现的视图中隐含地继承了它们的模型.由于每个视图都有自己的模型,因此我在局部视图中最终会出现模型类型不匹配的情况.
从这里我看到两个解决方案:
所以这里是问题:
非常感谢,TB.
Interface在两个模型上使用并实现它,这正是它们用于它们的那种东西.
以下是使用两个不同模型实现接口的两个不同视图的示例.这是子类型而不是ad-hoc多态.
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; }
}
Run Code Online (Sandbox Code Playgroud)
所以我们这里有一个非常简单的局部视图,即'InnerPartialView':
@model TestIntegration.Models.IReusableView
<div>
@Model.Name
</div>
Run Code Online (Sandbox Code Playgroud)
哪个用于家庭和这个示例控制器的页面:
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" });
}
}
Run Code Online (Sandbox Code Playgroud)
主页视图:
@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>
Run Code Online (Sandbox Code Playgroud)
关于观点:
@model TestIntegration.Models.ViewModelTwo
@{
ViewBag.Title = "About Us";
}
<h2>About</h2>
<p>
Put content here.
@Html.Partial("InnerPartialView")
</p>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14718 次 |
| 最近记录: |