如何在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
}

但上面说我只能有一个模型
如何解决?

如何在asp.net MVC视图中有条件地设置模型

您可以尝试使用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),因为它是编译时语句,所以您不能在运行时更改它。

如果你需要两个不同的模型,你应该有两种不同的观点。