繁体   English   中英

使用MVC 4 EF C#在“编辑”视图中查找时出现问题

[英]Trouble with lookup in Edit view using MVC 4 EF C#

我有一个表单的“编辑视图”。 我希望用户能够查找/搜索UPC(针对数据库表进行搜索)并查看该表单上的匹配记录,因此他们可以选择结果,然后将结果填充在“编辑视图”表单上,并通过表单提交给POST。

我正在处理的部分是查找/搜索。 我的“编辑视图”表单上有搜索框,搜索结果有一个空的div:

                            <div class="form-group" id="search-pac">
                                @Html.Action("PacSearch", "ItemRequest");
                            </div>
                            <div class="form-group" id="search-pac-results">
                            </div>

提交后,我成功看到UPC击中了控制器:

[HttpPost]
public ActionResult PacSearch(string pacupc)
{
    if (pacupc != null)
    {
        try
        {
            List<PriceAssociationLookup> matchingPacs = new List<PriceAssociationLookup>();
            matchingPacs = matchingPacs.GetPacs(pacupc);

            return PartialView("_PacSearchResultsPartial", matchingPacs);
        }
        catch (Exception e)
        {
            Alert.SetAlert(this.HttpContext, String.Format("There was an error in the Price Association Code lookup for UPC {0}.  Error: {1}", pacupc, e), "alert-warning");
        }
    }
    return PartialView("_PacSearchResultsPartial","UPC not found");
}

但是我在控制器中应该怎么做才能从数据库中获取匹配记录的列表时遇到了麻烦。 使用我当前在控制器中拥有的代码,我得到了错误:“错误1'System.Collections.Generic.List'不包含'GetPacs'的定义,并且没有扩展方法'GetPacs'接受类型为'的第一个参数可以找到System.Collections.Generic.List(您是否缺少using指令或程序集引用?)”

GetPacs定义为接受字符串。 如何将Pacups字符串传递给GetPacs?

这是相关的类:

namespace Portal.Repository.SqlDatabase {
    public partial class PriceAssociationLookup : IPriceAssociationLookupRepository
    {
        #region IPriceAssociationLookupRepository Members
        IEnumerable<IPriceAssociationLookupRepository> IPriceAssociationLookupRepository.GetPacs(string upc)
        {
            using (PortalDataEntities entities = new PortalDataEntities())
            {
                var priceAssociationLookups = (from priceassociationlookup in entities.PriceAssociationLookups
                                               where priceassociationlookup.Upc == this.Upc
                                               select priceassociationlookup).ToList();

                return priceAssociationLookups;
            }

        }

        #endregion IPriceAssociationLookupRepository Members

我的第一个建议是尝试删除.ToList,因为您仅返回IEnumerable:

    #region IPriceAssociationLookupRepository Members
    IEnumerable<IPriceAssociationLookupRepository> IPriceAssociationLookupRepository.GetPacs(string upc)
    {
        using (PortalDataEntities entities = new PortalDataEntities())
        {
            var priceAssociationLookups = (from priceassociationlookup in entities.PriceAssociationLookups
                                           where priceassociationlookup.Upc == this.Upc
                                           select priceassociationlookup);

            return priceAssociationLookups;
        }

    }

您的上下文可能已过期,可能会收到一个新错误-但请告诉我。

答案是:控制器:

[HttpPost]
public ActionResult PacSearch(string pacupc)
{
    if (pacupc != null)
    {
        try
        {
            PriceAssociationLookup pacRep = new PriceAssociationLookup();
            //List<PriceAssociationLookup> matchingPacs = pacRep.GetPacs(pacupc);

            return PartialView("_PacSearchResultsPartial", pacRep.GetPacs(pacupc));
        }
        catch (Exception e)
        {
            Alert.SetAlert(this.HttpContext, String.Format("There was an error in the Price Association Code lookup for UPC {0}.  Error: {1}", pacupc, e), "alert-warning");
        }
    }
    return PartialView("_PacSearchResultsPartial","UPC not found");
}

并且要返回的部分视图需要键入为:

@model List<Portal.BusinessModel.Entities.PriceAssociationLookup>

我认为当未找到UPC匹配项时,从控制器返回的内容可能仍然有问题(return PartialView(“ _ PacSearchResultsPartial”,“未找到UPC”);),但是我最初提出的主要问题已通过更改为控制器和局部视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM