问题描述
我的索引控制器中有一条简单的路由... [controller] / {region}。
因此在url中您将看到.. http:// localhost:51588 / Movies / malta (其中“马耳他”是该区域)
在随后的index.cshtml视图的代码中,该视图列出了我拥有的“马耳他”视图的电影。
@model IEnumerable<MaltaMoviesMVCcore.Models.Movie>
@{
ViewData["Title"] = "Movies";
}
Q ...我想将“区域”动态添加到上面的“标题”中,因此显示为“位置-马耳他” 我尝试过。...ViewData [“ Title”] =“电影-” @ Model.Region; 但是出现错误“ IEnumerable不包含'区域'的定义.....”
这在典型的“详细信息视图”中可以正常工作,在该视图中,模型只是....
@model MaltaMoviesMVCcore.Models.Movie and not ienumerable.
解决方法
创建一个MovieModelClass:
public class MovieModel
{
public string Region {get; set;}
public IEnumerable<MaltaMoviesMVCcore.Models.Movie> Movies {get; set;}
}
并将其初始化到您的控制器中
在视图内部更改模型:
@model MovieModel
在此之后您可以使用
ViewData["Title"] ="Movies - " @Model.Region
您可以使用:
访问电影列表@Model.Movies
//for example
foreach(var movie in @Model.Movies)
{
}
,
感谢谢尔盖(Sergey)的帮助。
那不是很有效。
最后,我从“ Context.Request.Path.Value”(“ MOVIES / MALTA”)获得了区域名称(“ MALTA”)。 最初,我尝试使用Context.Request.Query [“ RegionName”],但这返回null 我知道首选的方法是从模型中获取它。
最终代码...
// Get the last part of Request. Path '/MOVIES/MALTA'
string path = Context.Request.Path.Value.ToString();
string regionname = path.Substring(path.LastIndexOf("/") + 1);