>

asp.net 프로젝트를 MVC로 변환하려고하는데 간단한 asp.net에서 잘 실행되지만 MVC에서 오류가 발생합니다. 여기에는 모든 제품을 표시하는 패널이있는 간단한보기가 있습니다.

asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:Panel ID="PanelProducts" runat="server">
    </asp:Panel>
</asp:Content>

여기, 컨트롤러입니다

ProjectModel pm = new ProjectModel();
            List<Product> products = pm.getAllProducts();
            foreach (Product product in products)
            {
                Panel productPanel = new Panel();
                ImageButton imageButton = new ImageButton();
                Label lblName = new Label();
                Label lblPrice = new Label();
                imageButton.ImageUrl = "~/images/" + product.image;
                imageButton.CssClass = "productImage";
                imageButton.PostBackUrl = "Product.aspx?id=" + product.Id;
                lblName.Text = product.Name;
                lblName.CssClass = "productName";
                lblPrice.Text = "$" + product.Price;
                lblPrice.CssClass = "productPrice";
                productPanel.Controls.Add(imageButton);
                productPanel.Controls.Add(new Literal { Text = "<br />" });
                productPanel.Controls.Add(lblName);
                productPanel.Controls.Add(new Literal { Text = "<br />" });
                productPanel.Controls.Add(lblPrice);
                PanelProducts.Controls.Add(productPanel);
                return View();

내가 가진 오류는 컨트롤러가보기에서 id = panelproducts에 액세스 할 수 없다는 것입니다.

  • 답변 # 1

    부분보기 (예 : _ProductList.cshtml)를 만들고 컨트롤러에서 "PartialView ("_ ProductList ", 제품)을 반환합니다.

    __ ProductList.cshtml에서 아래 코드와 같은 Razor 구문을 사용하십시오. 웹 양식은 MVC와 다릅니다. MVC의 요점은 컨트롤러에서 UI/View를 분리하는 것입니다. MVC의 목적에 위배되는 컨트롤러에서 UI 컨트롤에 직접 액세스하는 WebForms에서와 같이 프로그래밍을 계속할 수 없습니다.

    @model IEnumerable<Product>
    <div id="PanelProducts">
        @foreach (var product in Model)
        {
            <a href="~/images/[email protected]" class="productImage">
                <img src="~/images/@product.image" />
            </a>
            <br />
            <label class="productName">@product.Name</label>
            <br />
            <label class="productPrice">@product.Price.ToString("C2")</label>
        }
    </div>
    
    

  • 이전 javascript - 탐색 막대 전환 단추에 축소 된 요소가 표시되지 않습니다
  • 다음 intel - 벡터 명령어 인코딩에 왜 1의 보수가 여전히 사용됩니까?