【问题标题】:controller cant access the id of panel in view控制器无法访问视图中面板的 ID
【发布时间】:2017-07-21 18:04:48
【问题描述】:

我正在尝试将 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。

【问题讨论】:

    标签: .net model-view-controller


    【解决方案1】:

    创建一个局部视图(即 _ProductList.cshtml)并从您的控制器执行“return PartialView("_ProductList", products)。

    在您的 _ProductList.cshtml 中,使用 Razor 语法,如下面的代码。 Webforms 与 MVC 不同。 MVC 的重点是将 UI/View 与控制器分离。您不能像在 WebForms 中那样继续编程,您可以直接从控制器访问 UI 控件,因为这违背了 MVC 的目的。

    @model IEnumerable<Product>
    <div id="PanelProducts">
        @foreach (var product in Model)
        {
            <a href="~/images/Product.aspx?id=@product.Id" 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 2010-11-21
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      相关资源
      最近更新 更多