如何让我的页面继承自类而不是表?

时间:2011-02-08 19:55:58

标签: asp.net-mvc

我需要从表格和特定页面上的视图访问数据,因此我创建了一个可以访问它们的类。看起来像这个`

namespace LoanManager.Models
{
    public class Loan_vwFieldValues
    {
        public Loan loan { get; set; }
        public VW_FIELD_VALUE vwFieldValues { get; set; }

    }
}

在我的页面顶部我有这个

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" Inherits="System.Web.Mvc.ViewPage<IEnumerable<LoanManager.Models.Loan_vwFieldValues>>" %>

然后我有一些其他代码可以使用我的控制器。

return View(_db.LOAN_VWFIELDVALESs.Where(predicate));

我对此的定义是这样的。

public System.Data.Linq.Table<Loan_vwFieldValues> LOAN_VWFIELDVALESs
        {
            get
            {
                return this.GetTable<Loan_vwFieldValues>();
            }
        }

这适用于我的所有其他页面(当然它们有不同的名称),但它们不是类,它们只是引用一个表或我已经创建的视图,但是这个页面需要访问一个表,一个视图,但是当它到达已发布代码的最后一部分(return语句)并且说Loan_vwFieldValues没有映射为表时它会抱怨,这是真的,因为它不是表, 我也有这个来填补Loan_vwFieldValues

public ActionResult LoanProperties(int id)
    {
        Loan_vwFieldValues l = new Loan_vwFieldValues();

        l.loan = (from a in _db.Loans where a.LOAN_ID == id select a).First();
        l.vwFieldValues = (from v in _db.VW_FIELD_VALUEs where v.Loan_ID == id select v).First();

        return View(l);

    }

但是如何才能让我的班级合作? 提前谢谢你。

2 个答案:

答案 0 :(得分:0)

您需要创建Loan_vwFieldValues的集合并返回 。我们没有足够的信息告诉您如何从数据访问层构建这些对象。

换句话说......

return View(_db.LOAN_VWFIELDVALESs.Where(predicate).Select(
  x => new Loan_vwFieldValues()
  {
     loan = yourCodeHere,
     vwFieldValues = moreOfYourCodeHere
  })); 

答案 1 :(得分:0)

感谢所有帮助过的人,我通过以下方式找到了解决方案......我希望它也可以帮助其他人。

IQueryable<Loan> loanList = _db.Loans.Where(predicate);

List<Loan_vwFieldValues> loanVwList = new List<Loan_vwFieldValues>();

foreach (Loan loan in loanList)
{
    Loan_vwFieldValues loanVw = new Loan_vwFieldValues();
    loanVw.loan = loan;
    loanVw.vwFieldValues = (from n in _db.VW_FIELD_VALUEs where n.Loan_ID == loan.LOAN_ID select n).First();
    loanVwList.Add(loanVw);
}

return View(loanVwList);