gpt4 book ai didi

asp.net-mvc-2 - 如何在 Asp.net MVC 2 中使用基本 ViewModel

转载 作者:行者123 更新时间:2023-12-04 03:35:01 27 4
gpt4 key购买 nike

当我熟悉 Asp.Net MVC 时,我正在使用 MVC 2,我注意到在 Kigg 项目中使用了 BaseViewData 类,我不确定如何实现。

我希望我的每个 ViewModel 都有某些可用的值。我想到了使用 iterface,但我想知道最佳实践是什么以及 Kigg 是如何做到的?

基格

public abstract class BaseViewData 
{
public string SiteTitle { get; set; }
// ...other properties
}
public class UserListViewData : BaseViewData
{
public string Title { get; set; }
// .. other stuff
}

在我的 WebForms 应用程序中,我使用继承自 System.Web.UI.Page 的 BasePage。
所以,在我的 MVC 项目中,我有这个:
public abstract class BaseViewModel
{
public int SiteId { get; set; }
}
public class UserViewModel : BaseViewModel
{
// Some arbitrary ViewModel
}
public abstract class BaseController : Controller
{
private IUserRepository _userRepository;

protected BaseController()
: this(
new UserRepository())
{
}
}

引用 Kigg 方法,我如何确保从 BaseViewModel 继承的每个 ViewModel 都具有 SiteId 属性?

我应该使用的最佳实践、示例或模式是什么?

最佳答案

我将采用的方法是也使用基本 Controller 并使用 OnActionExecuted 覆盖来使用通用数据填充您的模型。然后只需确保您的 Controller 从您的基本 Controller 继承,并且您的模型从基本模型继承。

public class BaseController : Controller
{

public override void OnActionExecuted( ActionExecutedContext filterContext )
{
var result = filterContext.Result as ViewResult;
if (result != null)
{
var baseModel = result.Model as BaseViewModel;
if (baseModel != null)
{
baseModel.SiteID = ...
}
}
}
}

关于asp.net-mvc-2 - 如何在 Asp.net MVC 2 中使用基本 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2751225/

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