如何在asp.net MVC视图中有条件地设置模型
本文关键字:有条件 设置 模型 视图 MVC asp net | 更新日期: 2023-09-27 18:24:58
我是ASP.NET MVC的初学者
我的页面有一个名为导航的部分视图,我正在重用它
如果用户在"主页"中,导航的<a>
需要指向"#"字符,如果用户位于"服务"页面,导航的href需要指向其他url,比如"www.mysite.com"。此菜单中的其他链接也会出现这种情况。
我试着做以下
@if (ViewContext.RouteData.Values.ContainsValue("Services"))
{
@model MySite.Models.ServicesNavigation
}
else
{
@model MySite.Models.HomeNavigation
}
但上面说我只能有一个模型
如何解决?
您可以尝试使用Interface
。
public interface INavigation
{
//Your props here
}
public class ServicesNavigation : INavigation
{
}
public class HomeNavigation: INavigation
{
}
那么您的视图可以是导航类型。
@model INavigation
在你的控制器中,根据你的条件,你可以通过你想要的INavigation
的实现。
.......
INavigation model;
if(conditionOneIsMet)
{
model = new ServicesNavigation();
}
else
{
model = new HomeNavigation();
}
return View(model);
您的视图实际上是从WebViewPage<TModel>
类派生的类。@model
语句定义了模型的类型(TModel
),因为它是编译时语句,所以您不能在运行时更改它。
如果你需要两个不同的模型,你应该有两种不同的观点。