2010-02-03 3 views
3

저는 ASP.NET을 처음 사용하기 때문에 사용자 지정 ObjectDataSource Insert 메서드를 구현하려고합니다. 기본 비즈니스 메서드는 단일 개체 매개 변수로 잘 작동합니다. 그러나 추가 매개 변수를 추가하면 비즈니스 메서드가 호출되지 않습니다.ObjectDataSource가 여분의 매개 변수가있을 때 Insert 메서드를 호출하지 않습니다.

여기 내 코드입니다. Insert()는 항상 호출되지만 InsertWithParams()는 호출하지 않습니다.

// Business Layer 
public class MyObject 
{ 
    public MyObject() {} 
    public string Foo { get; set;} 
} 

namespace MyLogic { 
public static Insert(MyObject m) 
{ 
    // ... do DB insert 
} 

public static InsertWithParams(MyObject m, string p) 
{ 
    // ... do more fancy DB insert 
} 
} // MyLogic 

는 다음 ObjectDataSource를 선언 감안할 때, "InsertWithParams"와 "MyObjectDS_Inserting은"호출되지 않습니다.

그러나 "MyLogic.Insert"가 대신 지정되면 이벤트와 함께 호출됩니다. 또한 InsertWithParams에서 p 매개 변수를 제거하면 호출됩니다.

<asp:ObjectDataSource runat="server" ID="MyObjectDS" 
     TypeName="Business.MyLogic" 
     DataObjectTypeName="Business.MyObject" 
     InsertMethod="InsertWithParams" 
     OnInserting="MyObjectDS_Inserting" 
     > 
     <InsertParameters> 
      <asp:Parameter Name="m" Type="Object" /> 
      <asp:Parameter Name="p" Type="String" /> 
     </InsertParameters> 
</asp:ObjectDataSource> 

는 그래서 내가 ObjectDataSource를의 삽입 방법에 매개 변수를 추가 할 수 없습니다이 경우 보인다. 선언 된 InsertParameters를 추가하거나 제거해도 차이가없는 것 같습니다.

답변

4

가 나는 또한 기록을 삽입하는 문제가 있었다, 그러나 나는 잠시 동안 테스트 후 발견하고 ObjectDataSource를에서 'DataObjectTypeName'매개 변수를 지정하면, InsertParameters 무시받을 것을 조금 구글. 그래서 나는 그것을 명시하지 않고, 그것은 나를 위해 일합니다. 여기에서

는 : http://www.velocityreviews.com/forums/t297725-objectdatasource-has-no-values-to-insert-error.html

+1

네는 데이터 소스 선언에서 여기서 objectTypeName = "Business.MyObject"을 제거한 후, 호출을 통해 제공됩니다. – Justicle

관련 문제