【问题标题】:Get page content dynamically from Sql server database MVC 5从 Sql server 数据库 MVC 5 动态获取页面内容
【发布时间】:2015-07-28 22:30:20
【问题描述】:

我想使用 ADO.NET 实体数据模型从 MVC 5 中的 SQL Server 数据库中获取信息到 li 元素中。

这是我生成的model.edmx

public partial class Entities : DbContext
    {
        public Entities()
            : base("name=Entities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<C__MigrationHistory> C__MigrationHistory { get; set; }

        public virtual DbSet<PackageType> PackageTypes { get; set; }
    }

我有一个名为 PackageTypes 的表,其中包含 3 列 Id、Name 和 PackagesInDeal。

<li class="pricing-title">
                            @Html.DisplayFor(model => @Model.Name) @*Free*@
                        </li>

在这个 li 元素中,我需要从表中获取 Name 值。

我不太熟悉如何向控制器添加两个功能

public ActionResult Create( int? id ) {
            ViewBag.UserId = new SelectList( db.AspNetUsers, "Id", "Email" );
            ViewBag.PackageTypeId = new SelectList( db.PackageTypes, "Id", "Name" );
            ViewBag.SelectedPackage = id;
            return View();
        }

这是控制器包含的代码,根据 id 参数显示 1、2、3 或 4 笔交易。

视图有如下代码:

 @if ( ( ViewBag.SelectedPackage ?? 0 ) <= 1 ) {
                <div class="col-lg-3 wow zoomIn" style="padding: 0;">
                    <ul class="pricing-plan list-unstyled selected" style="margin: 20px;">

@Html.DisplayFor(model => @Model.Name) @免费@

                        <li class="pricing-desc">
                            Basic package
                            <br />
                        </li>
                        <li class="pricing-price">
                            <span>00</span> / month
                        </li>
                        <li> <i class="fa fa-trophy"></i> aa </li>
                        <li> <i class="fa fa-globe"></i> bb </li>
                        <li> <i class="fa fa-suitcase"></i> cc</li>
                        <li class="selected"> <i class="fa fa-bell"></i>dd </li>
                        <li> <i class="fa fa-database"></i> ee </li>
                        <li> <i class="fa fa-envelope"></i> ff </li>
                        <li>
                            <div style="text-align: right; height: 110px;">
                            </div>
                        </li>
                        <li style="padding-top: 30px;">
                            <a class="btn btn-primary btn-xs" href="@Url.Action( "Create", "Deals", new { deal=Request.QueryString["deal"] } )" rel="1">Buy</a>
                        </li>
                    </ul>
                </div>
            }
@if ( ( ViewBag.SelectedPackage ?? 0 ) <= 2 ) {
                <div class="col-lg-3 wow zoomIn" style="padding: 0;">
                    <ul class="pricing-plan list-unstyled selected" style="margin: 20px;">
                        <li class="pricing-title">
                            Free + Domain
                        </li>
                        <li class="pricing-desc">
                            Basic package
                        </li>
                        <li class="pricing-price">
                            <span>10 </span> / month
                        </li>
                        <li> <i class="fa fa-trophy"></i> aa</li>
                        <li> <i class="fa fa-globe"></i> bb </li>
                        <li> <i class="fa fa-suitcase"></i> cc</li>
                        <li class="selected"> <i class="fa fa-bell"></i> dd</li>
                        <li> <i class="fa fa-database"></i> ee </li>
                        <li> <i class="fa fa-envelope"></i> ff </li>
                        <li>
                            @Html.Partial( "FreeDomain" )
                        </li>

                        <li style="padding-top: 30px;">
                            <a class="btn btn-primary btn-xs" href="@Url.Action( "Create", "Deals", new { deal=Request.QueryString["deal"] } )" rel="1">buy</a>
                        </li>
                    </ul>
                </div>
            }

那么如何从 sql server 数据库表中检索“免费”、“免费 + 域”和 li 中的其余信息??

【问题讨论】:

  • 你应该创建一个新的 ViewModel 来显示数据,而不是使用 ViewBag
  • 我可以在同一个视图中使用同一个控制器从 2 个或多个表中检索数据吗?
  • 在 action 方法中,您可以从不同的表/模型中获取数据,然后将其分配给新创建的视图模型dotnet-tricks.com/Tutorial/mvc/…
  • 所以基本上我需要更改我的控制器,从中删除 ViewBag,并更改视图中的逻辑?难道没有任何解决方法可以只添加我想要的而不是删除(修改)现有代码吗?
  • 您始终可以使用 MVC 脚手架为给定的数据模型实体生成控制器/视图。 asp.net/visual-studio/overview/2013/aspnet-scaffolding-overview

标签: sql-server asp.net-mvc asp.net-mvc-5 ado.net-entity-data-model


【解决方案1】:

您始终可以使用 MVC 脚手架为给定的数据模型实体生成控制器/视图。 http://www.asp.net/visual-studio/overview/2013/aspnet-scaffolding-overview

【讨论】:

    【解决方案2】:

    因此,经过长时间的网络研究,我终于得到了我想要的东西。所以控制器看起来像这样

    public ActionResult Create(int? id)
                {
                List<PackageType> packageTypes = db.PackageTypes.ToList();
                ViewBag.PackageTypesName = packageTypes;
                ViewBag.SelectedPackage = id;
                return View();
                }
    

    还有风景

    @if ((ViewBag.SelectedPackage ?? 0) <= 1)
                    {
                    <div class="col-lg-3 wow zoomIn" style="padding: 0;">
                        <ul class="pricing-plan list-unstyled selected" style="margin: 20px;">
                            <li class="pricing-title">
                                **@ViewBag.PackageTypesName[0].Name**
                            </li>
                            <li class="pricing-desc">
                                Basic package
                                <br />
                            </li>
                            <li class="pricing-price">
                                <span>00</span> / month
                            </li>
                            <li> <i class="fa fa-trophy"></i> aa </li>
                            <li> <i class="fa fa-globe"></i> bb </li>
    
    
    <li> <i class="fa fa-suitcase"></i> cc</li>
                        <li class="selected"> <i class="fa fa-bell"></i>dd </li>
                        <li> <i class="fa fa-database"></i> ee </li>
                        <li> <i class="fa fa-envelope"></i> ff </li>
                        <li>
                            <div style="text-align: right; height: 110px;">
                            </div>
                        </li>
                        <li style="padding-top: 30px;">
                            <a class="btn btn-primary btn-xs" href="@Url.Action("Create", "Deals", new { deal = Request.QueryString["deal"] })" rel="1">Buy</a>
                        </li>
                    </ul>
                </div>
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多