【问题标题】:How to use dataset along with model in ASP.NET Core MVC如何在 ASP.NET Core MVC 中使用数据集和模型
【发布时间】:2022-01-27 19:40:50
【问题描述】:
@using System.Data;    
@model DataSet;     
@using WebApplication4.Models; 

我正在使用数据集来检索表数据,但除此之外我还想使用另一个模型,即@model MyViewModel,如下所示:

@using System.Data;
@model DataSet
@using WebApplication4.Models;
@model MyViewModel;

我收到一个错误

每个文档只出现一个模型指令

如何将这些数据集放入模式中,以便仅导入其中包含数据集数据的MyViewModel 模型?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-mvc ado.net .net-6.0


    【解决方案1】:

    一个视图只能有一个模型。但是该模型可以是您喜欢的任何模型。

    例如,如果您希望模型具有 DataSet 属性:

    public DataSet MyDataSet { get; set; }
    

    或者您可能想创建一个由 DataSet 和您的模型组成的自定义视图模型:

    public class MyCompositeViewModel
    {
        public DataSet MyDataSet { get; set; }
        public MyViewModel ViewModel { get; set; }
    }
    

    你可以构造任何你喜欢的对象,从控制器传递到视图。因此,虽然您只能使用单个模型实例,但该模型实例可以由视图所需的任何内容组成。

    【讨论】:

    • 如何放到视图中?
    • @aayush:你能澄清一下你的意思吗?大概您已经知道如何在您的视图中使用 @model 指令,因为您在问题中证明了这一点。将模型传递给视图以及在视图中使用它是 ASP.NET MVC 的基础......
    • @aayush:只需在您的视图中使用@model MyCompositeViewModel; - 现在您拥有一个“复合”视图模型,其中包含MyDataSetViewModel 作为成员,在您的视图中
    【解决方案2】:

    你必须创建一个特殊的视图模型类

    public class ViewModel
    {
        public DataSet MyDataSet { get; set; }
        public MyAnotherModel MyAnotherModel { get; set; }
    }
    

    获取视图操作

    [HttpGet]
    public IActionResult GetMyView()
    {
        var  dataSet = ... your code
        myAnotherModel = ... your coe
    
        var model= new ViewModel
        {
         MyDataSet =dataSet;
         MyAnotherModel =myAnotherModel
          }
    
    return View (model);
    }
    

    获取视图

    @model ViewModel
    ....
    
    

    POST 视图操作

    [HttpPost]
    public IActionResult PostMyView(ViewModel model)
    {
        .... your code
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-03
      • 2018-09-02
      • 2020-10-24
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      相关资源
      最近更新 更多