我可以在ASP中使用我的大部分代码吗?NET mvc应用程序

本文关键字:代码 NET 应用程序 mvc 大部分 我的 ASP 我可以 | 更新日期: 2023-09-27 18:10:01

我写了一个简单的WPF应用程序作为示例:

模型:

public class User
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
}

ViewModel:

//ViewModelBase contains base code for INotifyPropertyChanged
public class UserViewModel : ViewModelBase
{
    public UserViewModel(User user)
    {
        _user = user ?? new User();
    }
    private User _user;
    public String FirstName
    {
        get { return _user.FirstName; }
        set
        {
            if (_user.FirstName != value)
            {
                _user.FirstName = value;
                RaisePropertyChanged("FirstName", "Full Name");
            }
        }
    }
    public String LastName
    {
        get { return _user.LastName; }
        set
        {
            if (_user.LastName!= value)
            {
                _user.LastName= value;
                RaisePropertyChanged("LastName", "Full Name");
            }
        }
    }
    public String FullName
    {
        get { return String.Format("{0}, {1}", LastName, FirstName); }
    }
}

我可以在mvc应用程序中重用我的代码吗?我认为INotifyPropertyChanged的东西不会工作,但我还不能重用ViewModel某种程度上?

我可以在ASP中使用我的大部分代码吗?NET mvc应用程序

没有。视图模型和控制器由完全不同的设计模式管理。

MVVM和MVC的亮点在于它们帮助你从代码背后分离出业务逻辑。你很可能可以共享你的支持代码(你从你的vm和controller调用的代码,但它不会被任何以平台为中心的设计所触及)和模型(取决于它们是如何编码的)。

我目前正在开发一个应用程序,它结合了MVC网站和WPF应用程序,我在它们之间共享模型,以及尽可能多的代码,我可以从我的vm和控制器中挤出来。但是两者之间有太多的不同,不能将vm用作控制器,反之亦然。

您的'firstname'和'lastname'方法将直接移动到模型中,因为它们只是稍微更花哨的getter和setter。

你的FullName方法,我想把它放在控制器中,因为它处理格式化,但它背后确实有一个基本的,可测试的逻辑。

正如您所说,我不确定您是否可以使用NotifyProperty子类,但这些方法通常应该愉快地移植过来。