동적으로로드 된 FormView 템플릿에서 삽입 단추를 클릭하면 다음 오류가 발생합니다. 기본 양식 모드는 삽입으로 설정됩니다. 삽입 템플릿이 잘로드되는 것을 볼 수 있습니다. TypeName = "WebApplication1.Repository.AccountRepo"및 DataObjectTypeName = "WebApplication1.Model.Account"를 사용하여 유형을 수정하십시오. 누군가 제발 도와 줄 수 있어요.FormView 동적 템플릿이 삽입/업데이트시 양식 값을 보내지 않음
오류는 입니다. ObjectDataSource 'ObjectDataSource1'에는 삽입 할 값이 없습니다. '값'사전에 값이 포함되어 있는지 확인하십시오.
public partial class _Default : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e)
{
//ITemplate control = Page.LoadTemplate("~/WebUserControl2.ascx");
FormView1.EditItemTemplate = Page.LoadTemplate("~/WebUserControl2.ascx");
FormView1.InsertItemTemplate = Page.LoadTemplate("~/WebUserControl2.ascx");
FormView1.ItemTemplate = Page.LoadTemplate("~/WebUserControl2.ascx");
}
}
내가 WebUserControl2.ascx에서 HTML 조각 다음 한 페이지 init 메소드의 코드에 따라
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
Welcome to ASP.NET!
</h2>
<p>
To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">
www.asp.net</a>.
</p>
<p>
You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" />
</p>
<asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1"
OnLoad="FormView1_Load" OnModeChanged="FormView1_ModeChanged"
oninit="FormView1_Init" ViewStateMode="Enabled" DefaultMode="Insert">
</asp:FormView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="WebApplication1.Model.Account"
DeleteMethod="Delete" SelectMethod="Select" TypeName="WebApplication1.Repository.AccountRepo"
UpdateMethod="Update" oninserting="ObjectDataSource1_Inserting"
InsertMethod="Insert">
<InsertParameters>
<asp:Parameter Name="acct" Type="Object" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="acct" Type="Object"/>
</UpdateParameters>
</asp:ObjectDataSource>
</asp:Content>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs"
Inherits="WebApplication1.WebUserControl2" ViewStateMode="Enabled" %>
Name:
<asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
<br />
Address:
<asp:TextBox ID="AddressTextBox" runat="server" Text='<%# Bind("Address") %>' />
<br />
<asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
Text="Insert" />
<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel" />
이 비즈니스 클래스 ObjectDataSource1로 설정되어있는 샘플 저장소 클래스
public class AccountRepo
{
private static Model.Account _account;
public void Delete(Model.Account acct)
{
_account = new Model.Account();
}
public Model.Account Update(Model.Account acct)
{
_account = acct;
return _account;
}
public Model.Account Insert(Model.Account acct)
{
_account = new Model.Account() { Name = "new" };
return _account;
}
public Model.Account Select()
{
if (_account == null)
_account = new Model.Account() { Name = "BrandNew" };
return _account;
}
}
이이 페이지에
public class Account
{
public string Name { get; set; }
public string Address {get;set;}
public static Account CreateAccount(){
return new Account();
}
}
"InsertParameters"에 뭔가 이상한 점이 있지만 필자는 내 손가락을 무엇에 두는 지 알고 있습니다. 코드에서 "acct"가 무엇인지 어떻게 알 수 있습니까? – jadarnel27
Insert 및 Update 메서드의 매개 변수 이름입니다. – user357086
그러나, 나는 WebUserControl2.ascx 내용을 가지고 에 배치한다면 \t \t \t <<- - 여기에 장소를!>! - 여기에 배치하십시오 -> \t InsertTemplate> asp : FormView> 동적으로 템플릿을로드 할 때 formvalue 컬렉션을 만들 수없는 경우에만 오류없이 작동합니다. –
user357086