标签: viewmodel

ASP.NET MVC - 主页面和视图页面的不同模型

我有一个强类型的母版页,但我想为它的一些子页面使用不同的类型.

例如,在母版页上......

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>
Run Code Online (Sandbox Code Playgroud)

客户端已经是一个复合对象,因此在某些子页面上,我可以保留相同的模型,只需引用成员对象.但是在其他页面上,这样做是没有意义的,因为我正在处理不同的模型,例如,处理Customer模型的子页面.

我的母版页仍然需要客户端模型,但子视图将完全适用于不同的模型.问题是,在控制器中,您只能将一个对象模型传递给View.有没有办法将一个模型传递给主模型,另一个模型传递给视图?谢谢!

asp.net-mvc master-pages viewmodel

15
推荐指数
1
解决办法
3032
查看次数

AutoMapper:为什么UseValue只执行一次

为什么UseValue只执行一次?我需要为每个请求调用TeamRepository.

我怎样才能做到这一点?

TeamEmployee映射到TeamEmployeeInput:

CreateMap<TeamEmployee, TeamEmployeeInput>()
    .ForMember(x => x.Teams, x => x.UseValue(GetTeamEmployeeInputs()))
    .ForMember(d => d.SelectedTeam, s => s.MapFrom(x => x.Team == null ? 0 : x.Team.Id));

private IEnumerable<TeamDropDownInput> GetTeamEmployeeInputs()
{
    Team[] teams = CreateDependency<ITeamRepository>().GetAll();
    return Mapper.Map<Team[], TeamDropDownInput[]>(teams);
}
Run Code Online (Sandbox Code Playgroud)

域对象:

public class TeamEmployee : Entity
{
    public virtual Employee Employee { get; set; }
    public virtual Team Team { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

查看模型对象:

public class TeamEmployeeInput
{
    public int? Id { get; set; }
    public string …
Run Code Online (Sandbox Code Playgroud)

c# mapping viewmodel automapper

15
推荐指数
1
解决办法
5824
查看次数

如何在绑定到ViewModel时更新Model?

我有一个[HttpPost]像这样的动作方法签名:

[HttpPost]
public ActionResult Edit(ExistingPostViewModel model)
{
   // Save the edited Post.
}
Run Code Online (Sandbox Code Playgroud)

现在,在过去(当我没有使用ViewModels,例如R&D)时,我有一个像这样的Edit方法的实现:

[HttpPost]
public ActionResult Edit(Post model)
{
    var existingPost = repo.Find(model.Id);
    TryUpdateModel(existingPost);
    repo.Save(existingPost);  
    return RedirectToAction("Success", existingPost.Id);
}
Run Code Online (Sandbox Code Playgroud)

哪个很好用.

但我很困惑如何使上述内容适应ViewModel方法.

如果我这样做:

TryUpdateModel(existingPost)
Run Code Online (Sandbox Code Playgroud)

使用我的ViewModel方法,没有太多发生.没有错误,但没有任何更新,因为MVC将不知道如何更新Posta ExistingPostViewModel(在它之前Post- > Post).

现在,我正在使用AutoMapper.所以我想我可以从ViewModel映射到Post,然后保存帖子.

但后来我基本上压倒一切.我不想这样做,并且打败了ViewModel.

有人可以让我迷惑吗?

这似乎是一种非常常见的情况,我对人们如何解决这个问题感到非常难过.我只能看到3种可能的解决方案:

  1. 不要在HTTP POST中使用ViewModel.正如我说我这样做,在过去的R&d和它的作品,但现在我看到我的视图的演变(验证,简单),我不能妥协,只是这个问题的缘故.

  2. 不要使用TryUpdateModel.可能,但那么我将如何合并这些变化呢?

  3. 从左到右使用.啊.但目前这似乎是我倾向的方式.

有人请给我解决方案#4!:)

顺便说一下,我正在使用ASP.NET MVC 3,Razor和Entity Framework.

asp.net-mvc model-binding updatemodel viewmodel asp.net-mvc-3

15
推荐指数
1
解决办法
3526
查看次数

Knockout JS在加载时调用函数

我正在使用Knockout.js来构建客户端视图模型.在我的视图模型中,我想公开一些可以绑定到页面中元素的函数(典型的MVVM模型).我只希望响应来自按钮的单击事件来调用这些函数,但是在构建视图模型时调用它们...

我已经定义了这样的模型:

<script type="text/javascript">
var ViewModel = function(initialData) {
    var self = this;

    self.id = initialData;
    self.isSubscribed = ko.observable(false);
    self.name = ko.observable();

    self.SubscribeToCategory = function () {
        $.ajax({
            url: '@Url.Action("Subscribe", "Category")',
            type: 'POST',
            data: {
                categoryId: self.id
            },
            success: function () {
                self.isSubscribed(true);
            },
            failure: function () {
                self.isSubscribed(false);
            }
        });

        alert('Subscribing...');
    };

    self.UnsubscribeFromCategory = function () {
        $.ajax({
            url: '@Url.Action("Unsubscribe", "Category")',
            type: 'POST',
            data: {
                categoryId: self.id
            },
            success: function () {
                self.isSubscribed(false);
            },
            failure: function () {
                self.isSubscribed(true); …
Run Code Online (Sandbox Code Playgroud)

javascript function viewmodel knockout.js

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

使用MvvmCross ShowViewModel传递复杂的导航参数

即使配置了此处指定的MvxJsonNavigationSerializer,我的复杂类型也不会从Show传递给Init方法v3中导航参数中的自定义类型

public class A
{
 public string String1 {get;set;}
 public string String2 {get;set;}
 public B ComplexObject1 {get;set;}
}

public class B
{
 public double Double1 {get;set;}
 public double Double2 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

当我将对象A的实例传递给ShowViewModel方法时,我收到此对象,String1&String2正确反序列化,但CopmlexObject1为null.

如何处理复杂对象MvvmCross序列化?

navigation serialization viewmodel complextype mvvmcross

15
推荐指数
2
解决办法
8760
查看次数

Android ViewModel 和 startActivity

我正在学习ViewModelLiveData并且在此过程中产生了疑问。

如果我需要启动一个,我应该怎么做Activity

是否可以将上下文作为参数传递给ViewModel(上下文不会存储在 ViewModel 中)?

ActivityAViewModel : ViewModel() {
    // ...

    fun openActivityB(context: Context) {
        context.startActivity(...)
    }

    // ...
}

ActivityA {
    // ...

    fun onSomethingHappened() {
        viewModel.openActivityB(this)
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果不是,在这种情况下最正确的做法是什么?

android viewmodel android-viewmodel android-architecture-components

15
推荐指数
3
解决办法
1万
查看次数

哪一层应该构建一个View Model?

我正在使用S#arp架构,我不记得我在哪里阅读它,但他们说他们的ViewModel应该存储在服务层,你的视图应该将viewmodel提交给服务进行处理.

我的问题是这个.应该构建ViewModel的哪一层?它应该在服务层,控制器是否请求它?或者控制器应该自己构建它?还有一个关于更新视图模型的问题,就好像它包含集合,并且模型状态无效,您还需要重新设置任何列表.

有什么建议?

非常感谢

马特

asp.net-mvc s#arp-architecture viewmodel

14
推荐指数
2
解决办法
6473
查看次数

MVVM:如何将参数传递给ViewModel的构造函数

我正在使用L. Bugnion的MVVM Light Framework.
将客户ID等参数传递给ViewModel构造函数的一些推荐方法是什么?

编辑:每个ViewModel所需的参数不是跨模型共享的参数.它是每个viewmodel实例独有的东西.

silverlight mvvm viewmodel service-locator mvvm-light

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

MVC3 - 使用ViewModel插入 - 未将对象引用设置为对象的实例

我有两个模型,如下所示,我试图从一个视图中插入一个模型到数据库.我创建了一个视图模型,试图这样做.

public class Blog
{
    public int BlogID { get; set; }
    public string Title { get; set; }
    public DateTime CreatedOn { get; set; }

    public virtual User User { get; set; }
    public virtual ICollection<BlogPost> Posts { get; set; }     
}

public class BlogPost
{
    public int PostID { get; set; }
    public string Body { get; set; }
    public DateTime CreatedOn { get; set; }

    public int UserID { get; set; }
    public virtual User User { …
Run Code Online (Sandbox Code Playgroud)

entity-framework viewmodel asp.net-mvc-3

14
推荐指数
1
解决办法
1万
查看次数

ViewModel是否能够在活动保存和恢复后生存?

ViewModel如果以下列方式使用,新类的实例可以在配置更改后继续存在:

mViewModel = ViewModelProviders.of(this).get(MyViewModel.class);
Run Code Online (Sandbox Code Playgroud)

但是,除了配置更改之外,还有一个保存还原方案,当整个应用程序的进程被终止时.

ViewModel在保存还原方案中,是否会保留字段内的值?


编辑:根据这个问题的答案,我写了这篇文章:Android ViewModel Architecture Component is Dangerous

android viewmodel view-model-pattern android-viewmodel android-architecture-components

14
推荐指数
2
解决办法
5886
查看次数