【问题标题】:how to return two variables from controller to view in mvc3如何从控制器返回两个变量以在 mvc3 中查看
【发布时间】:2014-03-27 07:51:26
【问题描述】:

嗨,我是 MVC3 的新手,我在返回两个变量时遇到问题,这是我的控制器代码

public ActionResult Create()
    {
        using (var context = new material_managementEntities())
        {
            var blogs = (from cs in context.GROUP_MASTER
                         where cs.GROUP_NAME == "MIC"
                         select cs.ID).FirstOrDefault();

            var droplist = new TRANSACTION();
            droplist.GROUP_MASTER_ID = blogs;
            droplist.GROUP_NAME = "MIC";
            var directory_master = db.DIRECTORY_MASTER.Include(d => d.CATEGORY_MASTER).Include(d => d.REPRESENTATIVE_MASTER);
            droplist.dir_data = directory_master.ToList();
            return View(droplist);
        }

    }

这里 Transaction 是一个表,DIRECTORY_MASTER 是另一个表,GROUP_MASTER_ID 是 Transaction 表的外键,我想要的是 toList 数据将显示在 modalpopup 框中,因此我需要传递两个表中可用的数据

这是模型

 namespace Material.Models
{
using System;
using System.Collections.Generic;
using System.Web.Mvc;
public partial class TRANSACTION
{
    public int ID { get; set; }
    public int GROUP_MASTER_ID { get; set; }
    public string GROUP_NAME { get; set; }
    public string dir_data { get; set; }
    public string NAME { get; set; }
    public string ADDRESS_DETAILS { get; set; }
    public string CONTACT_PERSON { get; set; }
    public Nullable<int> TEL_NO { get; set; }
    public Nullable<int> CELL { get; set; }
    public Nullable<int> FAX { get; set; }
    public string EMAIL_ID { get; set; }
    public Nullable<int> OPENING_BALANCE { get; set; }
    public Nullable<System.DateTime> OPENING_BALANCE_DATE { get; set; }
    public string VERIFIED { get; set; }

    public virtual GROUP_MASTER GROUP_MASTER { get; set; }
}

}

【问题讨论】:

  • 您是否尝试访问视图中的导航属性?
  • droplist.dir_data = directory_master.ToList();当您的 droplist.dir_data 是字符串时,您如何分配。

标签: c# asp.net-mvc asp.net-mvc-3


【解决方案1】:

你可以使用一个

viewbag.directory_master = (db.DIRECTORY_MASTER.Include(d => d.CATEGORY_MASTER).Include(d => d.REPRESENTATIVE_MASTER)).ToList();

然后从您的模型中迭代您的 viewbag.directory_master 并显示所需的。

或者您可以创建一个包含directory_masterTRANSACTION 的自定义视图模型

public class DashboardModel
{
 public TRANSACTION transation{get;set;}
 public List<directory_master>directoryMaster{get;set;}
}

所以你的动作会是这样的

public ActionResult Create()
    {
        using (var context = new material_managementEntities())
        {
            var blogId = (from cs in context.GROUP_MASTER
                         where cs.GROUP_NAME == "MIC"
                         select cs.ID).FirstOrDefault();

            DashboardModel dashboardModel= new DashboardModel();
            dashboardModel.transation.GROUP_MASTER_ID = blogId;
            dashboardModel.transation.GROUP_NAME = "MIC";
            dashboardModel.directoryMaster = (db.DIRECTORY_MASTER.Include(d => d.CATEGORY_MASTER).Include(d => d.REPRESENTATIVE_MASTER)).ToList();           
            return View(dashboardModel);
        }

    }

【讨论】:

  • 嗨 sudil ravindran pk,我收到以下错误“Material.Models.DashboardModel”是“类型”,但用作“变量”和错误 1 ​​非需要对象引用- 静态字段、方法或属性“Material.Models.DashboardModel.transation.get”
  • 我已经更正了,请立即尝试。不要忘记在视图中指定 DashboardModel
  • 嗨 sudil ravindran pk 我更改为 dashboardModel 如下 DashboardModel dashboardModel = new DashboardModel(); dashboardModel.transation.GROUP_MASTER_ID = blogId; dashboardModel.transation.GROUP_NAME = "MIC"; dashboardModel.directoryMaster = (db.DIRECTORY_MASTER.Include(d => d.CATEGORY_MASTER).Include(d => d.REPRESENTATIVE_MASTER));返回视图(仪表板模型);
  • 但现在我收到一个错误,因为错误 1 ​​无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.List'。存在显式转换(您是否缺少演员表?)
  • 知道了,我忘了包括 .ToList();
【解决方案2】:

我建议强烈键入您的 MVC 视图以获取所需类型的模型,并通过控制器操作方法的返回函数中的参数将该模型传递给视图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多