我添加了一个动态数据web应用程序作为MVC3应用程序的第二个项目。动态数据应用程序在MVC 3应用程序中引用派生的EF 4.1上下文(代码优先)。
DefaultModel.RegisterContext(
new EFCodeFirstDataModelProvider(() => new MvcApplication1.Models.Context()),
new ContextConfiguration() { ScaffoldAllTables = true });我想尝试一个动态GridView控件,但是我不知道如何配置DataSource控件。我的MVC应用程序中的连接字符串对该控件无效。即使在生成之后,控件的配置向导中也不会显示任何内容。我完全是webforms/数据源的文盲。我说得太离谱了吗?我该怎么做呢?
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.DynamicData.CustomPages.WebUserControl1" %>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<asp:DynamicDataManager ID="DynamicDataManager1" runat="server" />
<DataControlReference ControlID="GridView1"/>
</asp:DynamicDataManager>
<asp:EntityDataSource ID="EntityDataSource1" runat="server">
</asp:EntityDataSource>发布于 2012-01-13 10:18:12
DD模板远远落后于此。
将此代码添加到文件中:
using System.Linq;
using System.Web.DynamicData;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
public static class ModeContainer<OC> where OC : ObjectContext
{
private static MetaModel model = new MetaModel();
static ModeContainer() { model.RegisterContext(typeof(OC), new ContextConfiguration() { ScaffoldAllTables = true }); }
public static MetaModel Model { get { return model; } }
public static MetaTable Table<EO>() where EO : EntityObject { return Model.Tables.First(x => x.EntityType == typeof(EO)); }
}则全局可以包含以下内容:
routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = ModeContainer<ContactsModel.ContactsEntities>.Model
});然后,您可以在页面中执行以下操作,以在路由之外使用动态:
protected void Page_Init(object sender, EventArgs e)
{
MetaTable table = ModeContainer<ContactsModel.ContactsEntities>.Table<Person>();
GridView1.SetMetaTable(table);
}在网格和源码旁边,如下所示:
<asp:GridView ID="GridView1" runat="server" DataKeyNames="Id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<SelectedRowStyle BackColor="Azure" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
<asp:DynamicField DataField="Contacts" />
<asp:DynamicField DataField="Addresses" />
</Columns>
</asp:GridView>
<asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=ContactsEntities" DefaultContainerName="ContactsEntities" EntitySetName="People" EnableDelete="True" EnableInsert="True" EnableUpdate="True" EntityTypeFilter="Person">
</asp:EntityDataSource>发布于 2012-01-10 00:14:47
EntityDataSource控件需要ObjectContext (数据库优先上下文),而不是DbContext (代码优先上下文)。本教程展示了如何使用EntityDataSource,并且使用的时间不到一年:http://www.asp.net/web-forms/tutorials/getting-started-with-ef
https://stackoverflow.com/questions/8784234
复制相似问题