获取特定的控制器视图数据
本文关键字:视图 数据 控制器 获取 | 更新日期: 2023-09-27 18:15:06
我是ASP.net新手,已经做了10年的PHP程序员。MVC是有意义的,因为我发现它与Laravel非常相似。
我试图在我的ASP.net MVC 4项目中找到存储和服务元数据到我的网页的最佳解决方案。从我所读的内容中,我总结出使用以下方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace project.Models
{
public class Meta
{
public String Title { get; set; }
public String Description { get; set; }
public String Keywords { get; set; }
public String H1 { get; set; }
public String H2 { get; set; }
public String Robots { get; set; }
}
}
控制器using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace project.Controllers
{
public class AboutController : BaseController
{
public ActionResult Index()
{
ViewData["metaTitle"] = "About us";
ViewData["metaDescription"] = "";
ViewData["metaKeywords"] = "";
ViewData["pageH1"] = "About";
ViewData["PageH2"] = "";
return View();
}
}
}
<<p> 视图/strong> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>project | @ViewData["metaTitle"]</title>
<meta name="description" content="@ViewData["metaDescription"]">
<meta name="keywords" content="@ViewData["metaKeywords"]">
<meta name="robots" content="@ViewData["metaRobots"]">
我的问题实际上出现在我的另一个视图中,我试图建立一个面包屑路径。目前,我可以得到控制器/动作名称出现在面包屑中,但是我希望访问那些控制器/动作的视图数据。
我找不到任何地方解释如何做这件事/如果可能的话。
因此;- 我要去存储元数据错误,如果是这样,告诉我一个更好的方法去做。
- else请概述访问控制器ViewData的方法
请提供准确解释如何做的代码示例或资源
感谢您的宝贵时间。
我会像下面这样做,
1)创建一个基类模型,这个基模型将在其他模型中派生。
public class BaseModel
{
public String Title { get; set; }
public String Description { get; set; }
public String Keywords { get; set; }
public String H1 { get; set; }
public String H2 { get; set; }
public String Robots { get; set; }
}
关于Model类
public class AboutModel : BaseModel
{
public string AboutDescription { get; set; }
}
2)在BaseController类中创建一个initialize方法,它将为你的模型设置Title和description的属性。
public class BaseController : Controller
{
public BaseModel Initialize(BaseModel model)
{
model.Title = "Title";
model.Description = "Desc";
return model;
}
}
3)在About控制器中,你需要像下面这样调用initialize方法。
public class AboutController : BaseController
{
public ActionResult Index()
{
//create instance for About Model
var model = new AboutModel();
Initialize(model);
model.AboutDescription = "About Description";
return View(model);
}
}
4) In _Layout。cshtml类,你需要使用BaseModel类
@model <YourNameSpace>.BaseModel
<title>@Model.Title</title>
5)其他视图,例如:About.cshtml
@model <YourNameSpace>.AboutModel
我建议不要使用ViewData来处理常见的网站属性,如Title/Meta标签。这样你的代码会更清晰…
因为你正在为其他视图派生基类模型,并且在所有ActionResults方法中初始化Initialize方法,所以你应该获得跨页面/视图的标题描述属性