我想将ASP.NET应用程序(.aspx)移植到ASP.NET网站[Razor v3](.cshtml),我在2页之间共享一个类变量时遇到了麻烦。
非常简单的例子。如果我有:
public class CompactDisk
{
public string name;
public string artist;
public CompactDisk(string n, string a)
{
name = n;
artist = a;
}
}
我想在_AppStart.cshtml
:
@{
CompactDisk cd = new CompactDisk("Abbey Road", "The Beatles");
}
我想在两个不同的页面中使用它:
<p>@cd.name - @cd.artist</p>
分享类变量并从不同页面访问它的最佳方法是什么?
对不起我的无知,我是Razor的新人。
答案 0 :(得分:0)
如果类实例不是ViewModel的正式部分(即某些“环境信息”,如用户当前登录信息等),则在Controller中创建一个实例并将值设置为ViewBag。然后,您可以在Razor页面中将ViewBag作为松散类型的环境值字典访问。
答案 1 :(得分:0)
<强>项目/控制器/ CompactDiskController.cs 强>
public class CompactDiskController : Controller
{
public CompactDisk Cd { get; }
public CompactDiskController()
{
this.Cd = new CompactDisk("Abbey Road", "The Beatles");
}
public ActionResult Index()
{
return View(this.Cd);
}
public ActionResult List()
{
return View(this.Cd);
}
}
<强>项目/型号/ CompactDisk.cs 强>
public class CompactDisk
{
public string name;
public string artist;
public CompactDisk(string n, string a)
{
name = n;
artist = a;
}
}
<强>项目/查看/ CompactDisk 强>
<强> Index.cshtml 强>
@model Project.Models.CompactDisk
@{
ViewBag.Title = "Show from VIEW 1";
}
<h2>VIEW 1</h2>
@Html.DisplayFor(model => model.name)
@Html.DisplayFor(model => model.artist)
<强> List.cshtml 强>
@model Project.Models.CompactDisk
@{
ViewBag.Title = "Show from VIEW 2";
}
<h2>VIEW 2</h2>
@Html.DisplayFor(model => model.name)
@Html.DisplayFor(model => model.artist)