Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# MVC5实体框架基于不同模型的组合筛选结果_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# MVC5实体框架基于不同模型的组合筛选结果

C# MVC5实体框架基于不同模型的组合筛选结果,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我发现了从下拉列表中筛选结果的示例。。。但在所有示例中,我发现下拉列表使用的模型与结果相同。我尝试在一个模型的局部视图中抛出下拉列表,在另一个模型的视图中抛出结果。。。但它不起作用。这在PHP、WinForms或MS Access中非常简单,但在MVC中,做这么简单的事情似乎非常复杂 我的模型很简单。我有可以分配给具有桥接表/对象ContactGroups的组的联系人: public class Contacts { public int ContactsID { get; set; }

我发现了从下拉列表中筛选结果的示例。。。但在所有示例中,我发现下拉列表使用的模型与结果相同。我尝试在一个模型的局部视图中抛出下拉列表,在另一个模型的视图中抛出结果。。。但它不起作用。这在PHP、WinForms或MS Access中非常简单,但在MVC中,做这么简单的事情似乎非常复杂

我的模型很简单。我有可以分配给具有桥接表/对象ContactGroups的组的联系人:

public class Contacts
{
    public int ContactsID { get; set; }

    [Display(Name ="First Name")]
    [Required]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    [Required]
    public string LastName { get; set; }

    [Display(Name = "Primary Phone")]
    [Phone]
    public string PrimaryPhone { get; set; }

    [Display(Name = "Phone Type")]
    public PhoneType PhoneType { get; set; }

    [Display(Name = "PrimaryEmail")]
    [EmailAddress]
    public string PrimaryEmail { get; set; }

    public virtual ICollection<MessageContacts> MessageContacts { get; set; }

    public virtual ICollection<ContactGroups> ContactGroups { get; set; }
}



public class Groups
{
    public int GroupsID { get; set; }

    [Required]
    public string GroupName { get; set; }

    public virtual ICollection<ContactGroups> ContactGroups { get; set; }
}

public class ContactGroups
{
    public int ContactGroupsID { get; set; }

    [Required]
    public int ContactID { get; set; }

    [Required]
    public int GroupID { get; set; }
}
公共类联系人
{
public int ContactsID{get;set;}
[显示(Name=“First Name”)]
[必需]
公共字符串名{get;set;}
[显示(Name=“Last Name”)]
[必需]
公共字符串LastName{get;set;}
[显示(Name=“主电话”)]
[电话]
公共字符串主电话{get;set;}
[显示(Name=“电话类型”)]
公共电话类型电话类型{get;set;}
[显示(Name=“PrimaryEmail”)]
[电邮地址]
公共字符串PrimaryEmail{get;set;}
公共虚拟ICollection MessageContacts{get;set;}
公共虚拟ICollection联系人组{get;set;}
}
公课组
{
public int GroupsID{get;set;}
[必需]
公共字符串组名{get;set;}
公共虚拟ICollection联系人组{get;set;}
}
公共类联系人组
{
public int ContactGroupsID{get;set;}
[必需]
public int ContactID{get;set;}
[必需]
public int GroupID{get;set;}
}

我试图用可用的组填充下拉列表,并从下拉列表中筛选组中的所有联系人。我想这对有EF经验的您来说可能很简单,所以我非常感谢您的帮助

注意,POHeaderId下拉选项填充在documenmt ready。。。 因此,一旦他们选择了POheaderID,它就会根据操作返回的相关选项填充旧位置

这里有一个提纲——也许你可以做类似的事情,或者你可以找到一个更合适的解决方案

部分观点

<div class="form-group form-group-no-bott-marg">
    @Html.LabelFor(model => model.PoHeaderId, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("PoHeaderId", String.Empty)
        @Html.Label("NB: XXXXXX moved by specific Purchase Order", new { style = "color: red" })
    </div>    
</div>        
<div class="form-group form-group-no-bott-marg">
    @Html.LabelFor(model => model.OldLocationId, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("OldLocationId", String.Empty)
        @Html.ValidationMessageFor(model => model.OldLocationId)
    </div>
</div>

请注意,POHeaderId下拉选项填充在documenmt ready。。。 因此,一旦他们选择了POheaderID,它就会根据操作返回的相关选项填充旧位置

这里有一个提纲——也许你可以做类似的事情,或者你可以找到一个更合适的解决方案

部分观点

<div class="form-group form-group-no-bott-marg">
    @Html.LabelFor(model => model.PoHeaderId, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("PoHeaderId", String.Empty)
        @Html.Label("NB: XXXXXX moved by specific Purchase Order", new { style = "color: red" })
    </div>    
</div>        
<div class="form-group form-group-no-bott-marg">
    @Html.LabelFor(model => model.OldLocationId, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownList("OldLocationId", String.Empty)
        @Html.ValidationMessageFor(model => model.OldLocationId)
    </div>
</div>

@AntDC是MVC开发人员的标准方式吗?我不确定。我必须有一个级联形式,从一个下拉列表中进行选择,这个选择决定了下一个下拉列表的内容,以此类推。我发现它对我有用。我来自应用程序开发背景,所以我感觉到了你们的痛苦。这是一种常见的模式。史蒂夫格林:这是一个很好的例子,我完全相信我所需要的。这个例子有静态数据,但我相信仍然适用。如果你将此作为答案发布,我将奖励它,然后根据它发布最终解决方案。谢谢@AntDC是MVC开发人员的标准方式吗?我不确定。我必须有一个级联形式,从一个下拉列表中进行选择,这个选择决定了下一个下拉列表的内容,以此类推。我发现它对我有用。我来自应用程序开发背景,所以我感觉到了你们的痛苦。这是一种常见的模式。史蒂夫格林:这是一个很好的例子,我完全相信我所需要的。这个例子有静态数据,但我相信仍然适用。如果你将此作为答案发布,我将奖励它,然后根据它发布最终解决方案。谢谢谢谢你的回复。在看这个的时候,你似乎有两个下拉列表,填充了不同的列。。。但使用相同的模型。我面临的主要问题是,我的模型是不同的-但我相信你可以tweek和使用它与一些局部视图等祝你好运。谢谢你的答复。在看这个的时候,你似乎有两个下拉列表,填充了不同的列。。。但使用相同的模型。我面临的主要问题是,我的模型是不同的-但我相信你可以在一些局部视图中使用它,祝你好运。
public ActionResult Locations(int locationId, int poHeaderId = 0)
{
    var locList = StockMovesHeaderViewModelHelper.GetLocations(db, locationId, poHeaderId);

    var tmpList = new SelectListWithSelect(true);
    foreach (var l in locList)
    {
        tmpList.Add(new SelectListItem { Text = l.Description, Value = l.FulfilmentLocationID.ToString() });
    }
    return Json(tmpList, JsonRequestBehavior.AllowGet);
}