标签: viewmodel

从视图模型中的视图返回List <E>

这是我的情况:

我有这个视图模型:

public class ViewModel
{
   public DateTime someDate { get; set; }
   public String someString { get; set; }
   public List<E> someList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我要做的是在视图中设置日期,写一些文本然后从E列表中选择任意数量的E.在操作中返回的ViewModel必须具有日期,文本并包含所选项的列表.

我需要知道的是如何处理所述列表.如何将每个选定的项目添加到模型的列表中.我正在考虑public bool selected向E 添加属性,然后发送所有项目并过滤服务器上的所选项目,但是我不愿意来回发送所有数据,因为列表可能非常大.

我正在使用带有剃刀和JQUERY AJAX的MVC3用于我的所有表单帖子.

如果我不清楚,请告诉我.

谢谢.

asp.net-mvc jquery viewmodel razor asp.net-mvc-3

0
推荐指数
1
解决办法
2697
查看次数

什么是MVVM VIEW第一种方法?

我在PluralSight的Brian Lagunas的课程中学习MVVM.

一开始,他正在编写这两个接口:

public interface IView
{
    IViewModel ViewModel {get;set;}
}

public interface IViewModel
{
    IView View {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我在那种模式下学习,然后他从IView中删除了ViewModel.

public interface IView {}
Run Code Online (Sandbox Code Playgroud)

但我看不出它的区别,也许它的优点和缺点.如果我把第一个例子弄错了,有什么不对吗?

c# view mvvm viewmodel

0
推荐指数
1
解决办法
2472
查看次数

如何在WPF MVVM中将View对象发送到ViewModel?

我想将我的View对象发送到我的ViewModel,我该如何在WPF MVVM中执行此操作.

注意:

实际上我想要做的是..我有一个MainWindow,我没有关注MVVM,这个MainWindow有一个Canvas,我将所有的视图都放在UserControls中.现在从一个名为Stock的特殊视图我想要将一个UserControl"另一个视图"添加到按钮上的Canvas子项中从Stock View中单击

c# wpf view mvvm viewmodel

0
推荐指数
1
解决办法
1294
查看次数

mvc:将数据从模型传递到 cshtml Asp .net MVC

我只想检查视图模块(即CSHTML)中模型的数据,我的尝试是这样的

@model CCG.Models.RatingConverter
        <table>
            <tbody>
                <tr>
                   @if (Model.ToString()!="A")
                    {
                    <td class="row" ><%- Rating %></td>
                    }
                </tr>
            </tbody>
        </table>    
Run Code Online (Sandbox Code Playgroud)

我收到Null Reference Exception错误..所以请任何人知道..

c# asp.net-mvc models viewmodel

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

如何从此linq代码中删除foreach?

我在MVC,linq和viewmodels方面相当新.我设法让创建和索引视图工作."插入"并不像"列表"那么难.

我有这个linq查询:

 public ActionResult Index()
        {
            List<BlendElVM> BEVM = new List<BlendElVM>();
            var list = (from Blend in db.blends
                        join BlendEl in db.blendEl on Blend.ID equals BlendEl.ID
                        select new
                        {
                            Blend.ID, Blend.Title, Blend.TransDt, BlendEl.Comment
                        }).ToList();

             foreach (var item in list)
              {
                  BlendElVM o = new BlendElVM(); // ViewModel
                  o.Comment = item.Comment;
                  o.Title = item.Title;
                  o.TransDt = item.TransDt;
                  o.ID = item.ID;
                  BEVM.Add(o);
              }
            return View(BEVM);           
        }
Run Code Online (Sandbox Code Playgroud)

我不确定的是"foreach"部分.当我在调试中运行时,"列表"显示正常,但如果我注释掉"foreach",我会收到错误 - 即不期待模型.foreach做了什么?它与数据库有关,但我不明白它在哪里使用"o"并设置列.我以为它都会在一个linq查询中.是否有可能将两者结合起来并消除"foreach"?

linq asp.net-mvc viewmodel

0
推荐指数
1
解决办法
127
查看次数

从模型更新 ViewModel 中的属性的正确方法

我对 WPF 相当新手。我的理解是模型中的数据发生变化,它应该通知视图模型,并且视图将绑定到视图模型中的属性和类似的东西。它是否正确?如果是这样,我一直在读该模型应该实现INotifyPropertyChanged,并且看起来像这样

 public class LoginModel : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
    }

    public bool Authenticated { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的 ViewModel 中,我有一个属性“AuthResult”,它应该从模型属性“Authenticated”获取更新

public partial class view1 : UserControl, INotifyPropertyChanged{
 public bool AuthResult
    {
        get
        {
            return _authVal;
        }
        set
        {
            _authVal = value;
            NotifyPropertyChanged("AuthResult");
        }
    }

public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道当前的实施是不正确的。我发现我应该从我的模型订阅 PropertyChanged 通知,如下所示:

    LoginModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(LoginModel_PropertyChanged); …
Run Code Online (Sandbox Code Playgroud)

wpf notifications model mvvm viewmodel

0
推荐指数
1
解决办法
9732
查看次数

如何更改 ViewModel 中 xml 对象的可见性?

我有一个关于 ViewModel 中对象的可见性将如何改变的问题。

我来告诉你我的情况:我有一个登录界面,有两个Edittexts和两个按钮,一个按钮和一个Edittext默认是不可见的,我想要可见的按钮使第一个Edittext和我点击的按钮不可见并使第二个按钮和第二个 Edittext 可见。这就是问题所在,我可以在 Activity 中完成所有这些,但我需要在 ViewModel 中完成,我不知道如何从那里访问 xml 组件。

我知道这一切都很混乱,所以我会发送课程,如果有人能告诉我如何做到这一点,我将不胜感激。谢谢你。谢谢你。

登录 XML:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>
    <variable
        name="viewModel"
        type="com.quobis.sippo.ecco.viewmodel.LoginViewModel"/>
</data>
<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="LoginUser">

    <ImageView
        android:layout_width="250dp"
        android:layout_height="200dp"
        android:src="@drawable/logom"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.2"
    />


    <EditText
        android:id="@+id/usr"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:hint="@string/hint_user"
        android:textSize="18sp"
        android:textColorPrimary="@color/colorLetterLogin"
        android:backgroundTint="@color/colorBackButtLogin"
        android:elevation="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginLeft="60dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.6"
        app:addTextChangedListener="@{viewModel.emailTextWatcher}"
    />

    <Button
        android:id="@+id/btn_usr"
        android:layout_width="55dp"
        android:layout_height="50dp"
        android:background="@color/colorBackButtLogin"
        android:drawableBottom="@drawable/ic_keyboard_arrow_right"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginLeft="260dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.6"
        android:onClick="@{viewModel::onUserClicked}"
    />

    <EditText
        android:id="@+id/pass"
        android:layout_width="200dp"
        android:layout_height="50dp"
        android:hint="@string/hint_pass"
        android:textSize="18sp"
        android:shape="rectangle"
        android:inputType="textPassword"
        android:textColorPrimary="@color/colorLetterLogin"
        android:backgroundTint="@color/colorBackButtLogin"
        android:elevation="20dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:layout_marginLeft="60dp" …
Run Code Online (Sandbox Code Playgroud)

android mvvm viewmodel kotlin

0
推荐指数
1
解决办法
2587
查看次数

我可以在MVC的同一视图中使用多个viewModel吗?

是否可以在同一视图中使用多个视图模型?

我试图通过@model属性使用viewmodel

但是,如果我可以使用第二个viewModel,我会陷入困境,我将第二个放置在哪里?

.net c# asp.net-mvc viewmodel

0
推荐指数
1
解决办法
461
查看次数

AppCompatActivity未观察到ViewModel

我正在尝试在我的内部使用ViewModel,EarthquakeActivity但我一直收到此错误:

Wrong 1st argument type. Found: 'com.example.android.quakereport.EarthquakeActivity', required: 'androidx.lifecycle.LifecycleOwner'
Run Code Online (Sandbox Code Playgroud)

这是从我尝试做的时候开始的

mainViewModel.getEarthquakeData().observe(this, new Observer<List<Earthquake>>() {
        @Override
        public void onChanged(List<Earthquake> earthquakes) {
                // do something
        }
    });
Run Code Online (Sandbox Code Playgroud)

this这活动返回一个错误.

我读到这里AppCompatActivity已经延伸LifecycleOwner,这是我使用的是什么.这有什么不对?每个其他教程都没有这个问题.

我的EarthquakeActivity.java:

package com.example.android.quakereport;

import android.arch.lifecycle.ViewModelProviders;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import POJO.Earthquake;
import POJO.RootEarthquakeResponse;
import androidx.lifecycle.Observer;
import retrofit2.Call;


public class EarthquakeActivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private LinearLayoutManager  layoutManager;

    public …
Run Code Online (Sandbox Code Playgroud)

java android viewmodel gradle android-architecture-components

0
推荐指数
1
解决办法
640
查看次数

无法在 Kotlin 中创建类 ViewModel 的实例

我正在尝试在 Fragment 中初始化视图模型,但是每次我想在我的视图模型构造函数中传递接口时,它都会抛出错误无法创建类 ViewModel 的实例 而且我在kotlin-kapt或任何生命周期注释中没有任何问题

这是我的 ViewModel 类

class SettingsViewModel (
       var settingsView: SettingsView
    ) : ViewModel(){ }
Run Code Online (Sandbox Code Playgroud)

这是我要初始化视图模型的片段

class SettingsFragment : Fragment(), SettingsView {

     var viewmodel :SettingsViewModel? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment

         viewmodel = ViewModelProviders.of(this).get(SettingsViewModel(this)::class.java)

        val binding =
            DataBindingUtil.inflate<FragmentSettingsBinding>(inflater, R.layout.fragment_settings, container, false)
                .apply{}


        return binding.root
    }
Run Code Online (Sandbox Code Playgroud)

android constructor viewmodel kotlin

0
推荐指数
1
解决办法
4065
查看次数