Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在MVC5中引用SQL内部联接查询别名的最佳方法_C# 4.0_Razor_Asp.net Mvc 5 - Fatal编程技术网

C# 4.0 在MVC5中引用SQL内部联接查询别名的最佳方法

C# 4.0 在MVC5中引用SQL内部联接查询别名的最佳方法,c#-4.0,razor,asp.net-mvc-5,C# 4.0,Razor,Asp.net Mvc 5,我有下面的代码,想知道是否有任何方法可以在MVC5Razor中引用“ManagedByName”,或者如果您知道解决方法,将不胜感激 我试图实现的是派生一个结合在对象中的名字和姓氏,或者最好是可以在Razor中访问的“别名”。请帮我完成这项任务。我已经为此工作了将近两天,我感到困惑 在控制器类中,我有以下内容: public async Task<ActionResult> Details(string location) { if (l

我有下面的代码,想知道是否有任何方法可以在MVC5Razor中引用“ManagedByName”,或者如果您知道解决方法,将不胜感激

我试图实现的是派生一个结合在对象中的名字和姓氏,或者最好是可以在Razor中访问的“别名”。请帮我完成这项任务。我已经为此工作了将近两天,我感到困惑

在控制器类中,我有以下内容:

  public async Task<ActionResult> Details(string location)
        {

            if (location == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
          //  Contractor contractor = db.Contractors.Find(id);

            string Query = "SELECT cmb.*, dc.DeliveryCenter,c.ContractorNumber,c.SubContractor,c.FirstName,c.LastName,c.dbaBusinessName,at.AccountTitleDescription,c.Email,c.MasterContractorNumber,c.MasterContractorNumber,c.OriginalContractDate,c.IsContractSuspended" +
            " from Contractor c inner join ContractorManagedBy cmb on c.ManagedBy = cmb.ManagedBy" +
            " inner join DCLocMapping dc on c.LocationID = dc.LocationID" +
            " inner join AccountTitle at on c.AccountTitleID = at.AccountTitleID" +
            " where DeliveryCenter in (@p0) order by dc.DeliveryCenter,c.ContractorNumber" +
            " Select new Contracting { ManagedBy1 = cmb.ManagerFirstName + ' ' + cmb.ManagerLastName}";


            Contractor contractor = await db.Contractors.SqlQuery(Query, location).SingleOrDefaultAsync();

            if (contractor == null)
            {
                return HttpNotFound();
            }
                        return View(contractor);
        }

public class Contracting
        {
            public int iimanagedby { get; set; }
            public string ManagedByName { get; set; }
        }

public IQueryable<Contracting> TakeManagedBy()
        {
            return (from x in db.ContractorManagedBies
                     orderby x.ManagerLastName
                     select new Contracting
                     {
                         iimanagedby = x.ManagedBy,
                         ManagedByName = x.ManagerFirstName + " " + x.ManagerLastName

                     });
        }
@foreach (var item in Model)
{
  @Html.DisplayFor(modelItem => item...
}

我可以从Ienumerable模型中获取对象,但无法在foreach循环中获取ManagedByNameIQeryable名称,因为无法识别该对象。同样,任何代码示例方面的帮助都将不胜感激。我对MVC有些陌生,但希望有一种解决方案能让我感到困惑。

您可以通过在匹配的分部类中添加新属性来横向扩展EF类。我强烈建议您开始使用EF,停止使用硬连线SQL字符串:)

只需将
ManagedByName
添加为一个属性,返回连接的其他两个名称,并将其与视图中的任何其他属性一样使用

public partial class YourEFModelClassNameHere
{
   public string ManagedByName
   {
      get
      {
          return this.ManagerFirstName + " " + this.ManagerLastName;
      }
   }
}

谢谢你的额外见解。我会看看我是否能用这些信息解决问题。事实上,现在我看到了它,我遇到的问题是如何在页面顶部引用另一个@model实体的同一页面中调用这个EF对象的值?例如,我有:@Html.DisplayFor(modelItem=>item.SomeID在页面中,页面顶部有@model IEnumerable,但是如何“侧向”调用额外的EF对象正如您所说,它在foreach循环中呈现?部分类实际上是同一个类。只需确保新类与原始类具有完全相同的命名空间。然后新属性就存在于
Ctr
(我假设这是您的类名)。好的,这听起来可能是个愚蠢的问题,但我是否要添加您作为控制器的一部分或作为ViewModel提供的代码?我不确定将其放置在何处以便正确执行。还是应该直接编辑EF类?