簡體   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