1
我要显示在视图中的计算的字段,所以我试图创建这样一个视图模型:如何在ASP.NET MVC中使用视图模型来显示计算字段?
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace Facturacion.Models
{
public class Test
{
public int testId { get; set; }
[Required]
public decimal price { get; set; }
}
public class TestViewModel
{
[Key]
public int testId { get; set; }
public Test test { get; set; }
public decimal price { get; set; }
public decimal calculated { get; set; }
public TestViewModel(Test test)
{
Test = test;
calculated = Test.price * 2;
}
}
}
它给了我一个错误,所以我改变了构造函数:
public TestViewModel(Test test)
{
var foo = test;
calculated = foo.price * 2;
}
但现在当我构建项目时,它会创建一个名为“TestViewModels”的表,因此我无法访问“测试”表中的数据。
我认为一个viewmodel不应该有一个id,但是如果它不支持,scaffolder不会生成控制器。
使用视图模型在视图中显示计算字段的正确方法是什么?
您的视图模型不应该包含'Test test',所有的视图模型都需要一个无参数的构造函数,否则它们不会绑定在回发之后。你的视图模型也应该放在一个单独的文件夹中(比如说“ViewModels”)。在您的控制器方法中,您获取数据模型,初始化视图模型的新实例并将数据模型属性映射到该模型,然后将视图模型返回到视图。 –
而_“它给了我一个错误”_ - 什么错误? –
错误表示models.Test是一种类型,但它的使用方式类似于变量 –