我是ASP.NET MVC的初学者
我的页面有一个名为_Navigation的部分视图,我正在重复使用
如果用户在&#34; Home&#34;导航的<a>
需要指向&#34;#&#34; char,如果用户在&#34;服务&#34;页面,导航的href需要指向其他网址,让我们说&#34; www.mysite.com&#34;。它也会出现在此菜单中的其他链接中。
我尝试了以下
@if (ViewContext.RouteData.Values.ContainsValue("Services"))
{
@model MySite.Models.ServicesNavigation
}
else
{
@model MySite.Models.HomeNavigation
}
但它说我只能有一个型号 怎么解决?
答案 0 :(得分:4)
您可以尝试使用Interface
。
public interface INavigation
{
//Your props here
}
public class ServicesNavigation : INavigation
{
}
public class HomeNavigation: INavigation
{
}
然后您的视图可以是INAVigation类型。
@model INavigation
根据您的条件在您的控制器中,您可以通过所需的INavigation
。
.......
INavigation model;
if(conditionOneIsMet)
{
model = new ServicesNavigation();
}
else
{
model = new HomeNavigation();
}
return View(model);
答案 1 :(得分:1)
您的视图实际上是一个派生自WebViewPage<TModel>
类的类。 @model
语句定义模型的类型(TModel
)因为它是编译时语句,所以您无法在运行时更改它。
如果您需要两种不同的型号,则应该有两种不同的视图。