【问题标题】:dynamic model in MVCMVC中的动态模型
【发布时间】:2018-03-13 06:52:21
【问题描述】:

是否有可能在asp.net的MVC中创建动态模型 就像我有一个模型:

public class Head
{
    public long Id { get; set; }
    public string year { get; set; }
    public string Title { get; set; }
    public string FirstName { get; set; }
    public string PreferredName { get; set; }
    public string Surname { get; set; }
}

现在在控制器中我想创建一个名为 Hmodel 的模型,它只包含

  • 标题
  • 名字
  • 姓氏

基于某些条件。我将通过查看。

【问题讨论】:

  • 查找 ViewModels
  • 我真正想要的是有一个模型,它的属性可以在运行时添加或删除

标签: asp.net razor model-view-controller


【解决方案1】:

您可以在称为“模型”的不同文件夹中创建模型 喜欢:

namespace SolutionName.ProjectName.Models
{
    public class Hmodel
    {
        public string Title { get; set; }
        public string FirstName { get; set; }
        public string Surname { get; set; }
    }
}

在您的控制器中:

public class HomeController : Controller
{
    private Hmodel homeModel;

    public HomeController(HomeModel homeModel)
    {
        this.homeModel = homeModel;
    }

    public ViewResult ViewName()
    {
        Hmodel homeModel = new Hmodel();
        homeModel.FirstName = "Jack";
        //set your other attributes
    }
}

您可以在视图顶部添加:

@using SolutionName.Projectname.Models
@model Hmodel

要使用您的模型:

<p>Model.Firstname</p>

【讨论】:

  • 我想要实现的是我不想将空属性发送到视图,因为我的模型非常大,就像它有 200 个属性但一半的时间只填充了 100 个属性,具体取决于情况下,我不想发送所有其他 100 个具有空值的属性。我正在尝试减少服务器和客户端数据传输的带宽使用。
【解决方案2】:

经过长时间阅读发现,asp.net 迄今为止不支持动态模型。希望这将阻止人们走上错误的道路。如果需要这样的功能,可以使用 viewbag/dictionary 或选择其他平台而不是 mvc

【讨论】:

  • 你找到解决办法了吗?我的场景是我可以在一个表单上有 100 多个字段,我需要根据谁登录来显示字段,所以对于某些用户我可以为其他用户显示 20 个字段 60 等等。每个用户的业务/验证规则也可能不同。您是否尝试过创建一个大模型,然后使用动态视图模型?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 2023-03-06
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多