저는 ASP.NET에 처음 접했고 최근에 중계기를 발견했습니다. 어떤 사람들은 그들을 사용하고, 다른 사람들은 그렇지 않으며 어떤 해결책이 최선의 방법이 될지 모르겠습니다.ASP.NET 중계기 문제 (모범 사례에 대한 + 질문)
내가 경험 한 것부터 단순한 조작 (목록 표시)이 간단하지만 복잡한 작업을 수행하는 즉시 논리가 현저히 복잡해집니다.
문제 :
은 아마 개념의 날 나를 이해 부족 (이 가능성이 높다), 그래서 여기에 내가 뭘하려고 오전의 예를 나의 문제 일이다 내가 원하는 폴더에있는 파일 목록을 표시합니다.
솔루션는 :
String fileDirectory = Server.MapPath("/public/uploaded_files/");
String[] files = Directory.GetFiles(fileDirectory);
repFiles.DataSource = files;
repFiles.DataBind();
및
<asp:Repeater ID="repFiles" runat="server" OnItemCommand="repFiles_ItemCommand" >
<ItemTemplate>
<a href="/public/uploaded_files/<%# System.IO.Path.GetFileName((string)Container.DataItem) %>" target="_blank">View in a new window</a>
<br />
</ItemTemplate>
</asp:Repeater>
이 잘 작동합니다.
새로운 문제 : 그 파일을 삭제 할 수 있어야합니다.
솔루션 : 나는 이벤트 잡을
<asp:LinkButton ID="lbFileDelete" runat="server" Text="delete" CommandName="delete" />
: 나는 항목 템플릿에서 삭제 링크를 추가
protected void repFiles_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "delete")
{
// ... blah
}
}
을 ... 다음 무엇을? e.Item.DataItem이 null임을 알기 위해 여기에서 제거 할 파일 경로를 어떻게 얻습니까? (디버거를 실행했습니다).
루프를 사용하여 동일한 작업을 수행 할 수 있었을 때 리피터를 사용하여 시간을 낭비 했었습니까? 단지 단순한 것일뿐입니다.
다른 솔루션보다 리피터를 사용하면 어떤 점이 가장 좋은가요?
이렇게 생성 된 HTML에 대한 제어는 Repeater의 큰 이점입니다. – JasonS
하지만 뭔가를 할 때도 제어 할 수 있습니다. foreach thing <% = "some HTML"%> -. 실제로 더 많은 통제가 있습니다. – marcgg
@jerSchneid, 귀하의 솔루션을 시도하고 목록을 표시 할 것으로 예상되는 페이지 이동 : 파서 오류 설명 :이 요청을 처리하는 데 필요한 리소스를 구문 분석하는 동안 오류가 발생했습니다. 다음의 특정 구문 분석 오류 세부 정보를 검토하고 소스 파일을 적절하게 수정하십시오. 파서 오류 메시지 : 서버 태그가 제대로 구성되지 않았습니다. – marcgg