为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ASP.NET 中使用视图模型?

如何在 ASP.NET 中使用视图模型?

C#
喵喵时光机 2022-01-15 17:13:12
我想查看名为 Nvram 和 ExecOut 的两个表的数据。**Nvram:**using Newtonsoft.Json;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;namespace SmartRouter.Domain{  public class Nvram  {    [Key, ForeignKey("SRouter")]    public int NvramId { get; set; }    [JsonProperty("wanConnectionMode")]    public string ConnectionType { get; set; }    [JsonProperty("WAN_MAC_ADDR")]    public string IConfigMacAddress { get; set; }    [JsonProperty("lan_gateway")]    public string DefaultGateway { get; set; }    [JsonProperty("wan_dhcp_hn")]    public string HostName { get; set; }    [JsonProperty("macCloneEnabled")]    public string MacCloneEnable { get; set; }    [JsonProperty("macCloneMac")]    public string MacCloneMac { get; set; }    [JsonProperty("wan_pppoe_user")]    public string Username { get; set; }    [JsonProperty("wan_pppoe_pass")]    public string Password { get; set; }    [JsonProperty("wan_pppoe_optime")]    public string WanOperationMode { get; set; }    [JsonProperty("wan_ipaddr")]    public string WanIPAddress { get; set; }    [JsonProperty("wan_netmask")]    public string WanSubnetNetmask { get; set; }    [JsonProperty("wan_gateway")]    public string WanGatewayIP { get; set; }    [JsonProperty("wan_primary_dns")]    public string WanDNS1 { get; set; }    [JsonProperty("wan_secondary_dns")]    public string WanDNS2 { get; set; }    [JsonProperty("lan_ipaddr")]    public string LanIPAddress { get; set; }    [JsonProperty("lan_netmask")]    public string LanSubnetNetmask { get; set; }    [JsonProperty("dhcpEnabled")]    public bool? DHCPEnabled { get; set; }    [JsonProperty("dhcpStart")]    public string DHCPStart { get; set; }    [JsonProperty("dhcpEnd")]    public string DHCPEnd { get; set; }    [JsonProperty("dhcpMask")]    public string DHCPSubnetMask { get; set; }    [JsonProperty("dhcpPriDns")]    public string DHCPDNSPrimary { get; set; }    [JsonProperty("dhcpSecDns")]  }}
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

不确定哪个对象返回动态,因此您可能希望返回一些 DataFromRepoDto 对象(为该对象创建新类),其中分配了所有这些字段


DataFromRepoDto:


    public class DataFromRepoDto{

            public string ConnectionType {get;set;}

            public string IConfigMacAddress {get;set;}

            public string LanIPAddress {get;set;}


            //etc all needed fields with respective datatypes



    }   

您的方法已修改:


public DataFromRepoDto GetRouterStatusByMac(string macAddress)

{

  var nvramdata=_srdbcontext.Nvrams.Where(q => q.SRouter.MacAddress == macAddress).Select(s => new

  {

    s.ConnectionType,

    s.IConfigMacAddress,

    s.LanIPAddress,

    s.LanSubnetNetmask,

    s.DefaultGateway

  }).FirstOrDefault();

  var execdata = _srdbcontext.ExeOuts.Where(q => q.SRouter.MacAddress == macAddress).Select(e => new

  {

    e.BuildInfo,

    e.Uptime,

    e.WANIPAddress,

    e.SubnetMask,

    e.DefaultGateway,

    e.PrimaryDNS,

    e.SecondaryDNS,

    e.LanMacAddress

  }).FirstOrDefault();

  return new DataFromRepoDto

  {

    ConnectionType = nvramdata.ConnectionType,

    IConfigMacAddress = nvramdata.IConfigMacAddress,

    LanIPAddress = nvramdata.LanIPAddress,

    //etc...

  };

    //return result;

}

然后在您的控制器操作中使用它。


var dataFromRepo = 

routerrepository.GetRouterStatusByMac("f8:b5:68:a0:10:1c");

var routerStatusViewModel = new RouterStatusViewModel{

    //object initializer

    WANIPAddress = dataFromRepo.WANIPAddress,

    //etc...

};

return View(routerStatusViewModel );

之后,您可以像这样访问您的数据


@model myproject.mynamespace.Models.RouterStatusViewModel


<div>@Model.WANIPAddress<div> 

或使用 html 助手


@Html.LabelFor(x => x.WANIPAddress )


查看完整回答
反对 回复 2022-01-15
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号