标签: viewmodel

什么是MVC中的ViewModel?

我是ASP.NET MVC的新手.我在理解ViewModel的目的时遇到了问题.

什么是ViewModel,为什么我们需要一个用于ASP.NET MVC应用程序的ViewModel?

如果我能有一个简单的例子,那就更好了.

asp.net-mvc viewmodel

411
推荐指数
9
解决办法
30万
查看次数

忽略使用Automapper映射一个属性

我正在使用Automapper,我有以下场景:类OrderModel有一个名为'ProductName'的属性,它不在数据库中.所以当我尝试使用以下方法进行映射时:

Mapper.CreateMap<OrderModel, Orders>(); 
Run Code Online (Sandbox Code Playgroud)

它会生成一个异常:

"Project.ViewModels.OrderModel上的以下1个属性未映射:'ProductName'

我已经阅读了AutoMapper的Wiki for Projections相反的情况(额外的属性在目的地,而不是在源,这实际上是我的情况)

如何避免使用automapper来映射此属性?

c# model viewmodel automapper object-object-mapping

263
推荐指数
6
解决办法
19万
查看次数

无法在AppCompatActivity上解析符号ViewModelProviders

嘿我想让我的ViewModel工作,但到目前为止没有运气.Android Studio显示错误Cannot resolve symbol 'ViewModelProviders'.

我在这个题目中找到的每个其他问题被修正extends Activityextends AppCompatActivity,但我延长正确的.不确定我错过了什么...
我的代码基于此YouTube视频

MainActivity.java

public class MainActivity extends AppCompatActivity implements
    TileAdapter.TileAdapterOnClickHandler {


private BaseViewModel viewModel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //set Toolbar
    Toolbar myToolbar = findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);


    //initialize viewModel
    viewModel = ViewModelProviders.of(this).get(BaseViewModel.class);
Run Code Online (Sandbox Code Playgroud)

BaseViewModel.java

public class BaseViewModel extends ViewModel {

private Movie[] mMovie;

public void init (Movie[] movies){
    this.mMovie = movies;
}

public Movie[] getMovie() {
    return mMovie;
}
Run Code Online (Sandbox Code Playgroud)

android viewmodel android-architecture-components

99
推荐指数
7
解决办法
4万
查看次数

DTO = ViewModel?

我正在使用NHibernate来保存我的域对象.为了简单起见,我将ASP.NET MVC项目用作表示层和服务层.

我想从我的控制器类返回XML中的域对象.在Stack Overflow上阅读了一些帖子后,我收集DTO是可行的方法.但是,我也遇到过有关ViewModel的帖子.

我的问题:数据传输对象和ViewModels是一样的吗?或者ViewModel是DTO的一种子模式?

asp.net-mvc domain-driven-design dto viewmodel

98
推荐指数
6
解决办法
4万
查看次数

ASP MVC 3中的一个视图中的两个模型

我有2个型号:

public class Person
{
    public int PersonID { get; set; }
    public string PersonName { get; set; }
}
public class Order
{
    public int OrderID { get; set; }
    public int TotalSum { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想在SINGLE视图中编辑BOTH类的对象,所以我需要这样的东西:

@model _try2models.Models.Person
@model _try2models.Models.Order

@using(Html.BeginForm())
{
    @Html.EditorFor(x => x.PersonID)
    @Html.EditorFor(x => x.PersonName)
    @Html.EditorFor(x=>x.OrderID)
    @Html.EditorFor(x => x.TotalSum)
}
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用:.cshtml文件中只允许一个"模型"语句.可能有一些解决方法吗?

viewmodel asp.net-mvc-3

92
推荐指数
5
解决办法
16万
查看次数

ASP.NET MVC模型与ViewModel

好的,我一直听到有关MS的ASP.NET MVC的"ViewModels"的讨论.

现在,这是一种特定的模型,对吗?不是特定的视图.

根据我的理解,它是一种具有与View交互的特定目的的模型?或类似的东西?

一些澄清将不胜感激.

asp.net-mvc model viewmodel asp.net-mvc-2

87
推荐指数
5
解决办法
7万
查看次数

如何在POST操作中将View Model映射回Domain Model?

互联网上使用ViewModels并使用Automapper的每篇文章都提供了"Controller - > View"方向映射的指导.您将域模型与所有选择列表一起放入一个专门的ViewModel并将其传递给视图.这很清楚也很好.
视图有一个表单,最终我们处于POST操作中.这里所有的模型绑定器与[显然]另一个视图模型一起来到现场,它显然与原始的ViewModel 相关,至少在命名约定方面是为了绑定和验证.

如何将其映射到您的域模型?

让它成为插入动作,我们可以使用相同的Automapper.但如果是更新动作怎么办?我们必须从Repository中检索我们的Domain Entity,根据ViewModel中的值更新它的属性并保存到Repository.

附录1(2010年2月9日):有时,分配模型的属性是不够的.应根据View Model的值对域模型采取一些措施.即,应该在域模型上调用一些方法.可能应该有一种位于Controller和Domain之间的应用服务层,以便处理View Models ...


如何组织此代码以及将其放置在何处以实现以下目标?

  • 保持控制器薄
  • 荣誉SoC实践
  • 遵循领域驱动设计原则
  • 干嘛
  • 未完待续 ...

asp.net-mvc domain-driven-design separation-of-concerns viewmodel automapper

85
推荐指数
3
解决办法
2万
查看次数

如何从后台服务和更新UI更新ViewModel的LiveData

最近我正在探索谷歌最近推出的Android架构.从文档中我发现了这个:

public class MyViewModel extends ViewModel {
    private MutableLiveData<List<User>> users;
    public LiveData<List<User>> getUsers() {
        if (users == null) {
            users = new MutableLiveData<List<Users>>();
            loadUsers();
        }
        return users;
    }

    private void loadUsers() {
        // do async operation to fetch users
    }
}
Run Code Online (Sandbox Code Playgroud)

活动可以按如下方式访问此列表:

public class MyActivity extends AppCompatActivity {
    public void onCreate(Bundle savedInstanceState) {
        MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);
        model.getUsers().observe(this, users -> {
            // update UI
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在loadUsers()我正在异步获取数据的函数中,我将首先检查数据库(Room)中的数据,如果我没有得到数据,我将进行API调用以从Web服务器获取数据.然后我将获取的数据插入数据库(Room)并根据数据更新UI.建议的方法是什么?

如果我开始ServiceloadUsers()方法中调用API ,我该如何更新MutableLiveData<List<User>> users …

android background-service viewmodel android-room android-architecture-components

80
推荐指数
3
解决办法
5万
查看次数

Android ViewModel附加参数

有没有办法将其他参数传递给我的自定义AndroidViewModel构造函数,除了Application上下文.例:

public class MyViewModel extends AndroidViewModel {
    private final LiveData<List<MyObject>> myObjectList;
    private AppDatabase appDatabase;

    public MyViewModel(Application application, String param) {
        super(application);
        appDatabase = AppDatabase.getDatabase(this.getApplication());

        myObjectList = appDatabase.myOjectModel().getMyObjectByParam(param);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我想要使用我的自定义ViewModel类时,我在我的片段中使用此代码:

MyViewModel myViewModel = ViewModelProvider.of(this).get(MyViewModel.class)
Run Code Online (Sandbox Code Playgroud)

所以我不知道如何将额外的参数传递String param给我的自定义ViewModel.我只能传递Application上下文,但不能传递其他参数.我真的很感激任何帮助.谢谢.

编辑:我添加了一些代码.我希望现在好多了.

android mvvm viewmodel

72
推荐指数
5
解决办法
2万
查看次数

由于 ViewModelProviders.of() 已弃用,我应该如何创建 ViewModel 的对象?

我一直在尝试在 Activity 中创建 ViewModel 对象,但不推荐使用 ViewModelProviders 那么创建 ViewModel 对象的替代方法是什么。

android viewmodel

72
推荐指数
9
解决办法
4万
查看次数