gpt4 book ai didi

asp.net - 何时使用强类型 View ?

转载 作者:行者123 更新时间:2023-12-03 22:03:03 26 4
gpt4 key购买 nike

我正在开发一个 MVC 应用程序,我想知道在什么情况下最好使用强类型 View ,什么时候不......我想这更像是一个最佳实践问题。我正在制作一个电子商务应用程序,并且有一个订单、产品等表格。我正在处理的部分让我想到了这个问题,我为管理员添加了一个新产品页面,以便在其中放置更多商店商品。关于何时知道使用强类型 View 会有很大帮助。

我已经搜索了相关问题,前 3 页左右没有弹出任何内容,但如果您知道帖子,请指导我。

谢谢。

最佳答案

每当您需要在 View 上显示数据(在任何特定对象或对象集合上)时,请使用强类型 View 。

如果您的 View 纯粹是信息性的,您可以使用 ModelState 传递少量信息(例如:成功/错误页面、未授权消息等)

在我的应用程序中,我对每个 View 都进行了强类型化,这样我就可以轻松地将用户登录信息传递到母版页。也就是说,我的所有 View 都是强类型的、模板化的并被限制在一个包含站点配置和用户登录信息的基类中。

因此,我可以这样做:

public class MyBaseMasterPage : ViewMasterPage<MyBaseModel>
{
public string CurrentTheme
{
get
{
if (this.Model.CurrentUser != null)
return this.Model.CurrentUser.Theme;

else return this.Model.Config.DefaultTheme;
}
}

public User CurrentUser { get { return this.Model.CurrentUser; } }

public ConfigurationRepository Config { get { return this.Model.Config; } }
}

请注意,由于母版页的主题仅基于模型中填充的内容,因此 View 本身永远不会触发对数据库/缓存的命中。

MyBaseModel 的配置如下:
public class MyBaseModel
{
private MyBaseModel() { }

public MyBaseModel(MyBaseController controller)
{
this.CurrentUser = controller.CurrentUser;
this.Config = controller.Config;
}

public User CurrentUser { get; private set; }

public ConfigurationRepository Config { get; private set; }
}

私有(private)构造函数强制我的模型的所有子类使用源 Controller 初始化模型。

Controller 基类 将用户拉出 session 并将配置拉出缓存。

这样,无论如何,我的所有 View 都可以访问用户和配置数据,而不会对数据库产生任何影响。

现在,在 MyBaseController 中:
public class LanLordzBaseController : Controller
{
[Obsolete]
protected new ViewResult View(string viewName, object model)
{
if (model == null)
{
throw new ArgumentNullException("model");
}

if (!(model is MyBaseModel))
{
throw new ArgumentException("The model you passed is not a valid model.", "model");
}

return base.View(viewName, model);
}

protected ViewResult View(string viewName, MyBaseModelmodel)
{
if (model == null)
{
throw new ArgumentNullException("model");
}

return base.View(viewName, (object)model);
}

public ConfigurationRepository Config { get { ... } }

public User CurrentUser { get { ... } }
}

这帮助我找到了所有返回未从正确基类继承的 View 的 Controller 。

关于asp.net - 何时使用强类型 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com