asp.net core mvc에서 외부컨포넌트 aspx 파일 로딩 질문입니다.

안녕하세요. 회사에서 갑자기 웹 일을 맡아서 급하게 일을 하고 있는 초보입니다…

treegrid.com에 RunBarChart 를 mvc로 옮겨서 사용하고자 하는데

예제 프로그램에 DB를 호출하는 방식에서
웹폼의 Page라는 클래스에 있는 System.Web.HttpResponse 클래스에 TextWriter를 이용해야만 랜더링이 된다고 적혀 있는데 어떻게 MVC로 컨버팅을 해야 할지 잘 몰라 문의들 드립니다.

예제 다운로드 링크는
http://www.treegrid.com/Download/TreeGridEval.zip?Version=16.4 이곳입니다.

해당 예제에서 컨버팅 하고 싶은 aspx 파일경로는
TreeGridEval\ExamplesGantt\AspNetCS\Run\RunDBData.aspx 입니다.

컨버팅 하고 싶은 파일의 로직 부분은 아래와 같습니다.

string Path = System.IO.Path.GetDirectoryName(Context.Request.PhysicalPath);
System.Data.IDbConnection Conn = null;
if (UseMDB) // For MS Acess database
{
Conn = new System.Data.OleDb.OleDbConnection(“Data Source="” + Path + “\…\Database.mdb";Mode=Share Deny None;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Engine Type=5;Provider="Microsoft.Jet.OLEDB.4.0";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don’t Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1”);
}
else // For SQLite database
{
System.Reflection.Assembly SQLite = System.Reflection.Assembly.LoadFrom(Path + “\…\…\…\Server\SQLite” + (IntPtr.Size == 4 ? “32” : “64”) + “\System.Data.SQLite.DLL”);
Conn = (System.Data.IDbConnection)Activator.CreateInstance(SQLite.GetType(“System.Data.SQLite.SQLiteConnection”), “Data Source=” + Path + “\…\Database.db”);
}
Conn.Open();
System.Data.IDbCommand Cmd = Conn.CreateCommand();

// — Response initialization —
Response.ContentType = “text/xml”;
Response.Charset = “utf-8”;
Response.AppendHeader(“Cache-Control”,“max-age=1, must-revalidate”);
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(“en-US”);

// — Generating data —
Cmd.CommandText = “SELECT * FROM Run ORDER BY id”;
System.Data.IDataReader R = Cmd.ExecuteReader();
Response.Write(“”);
while (R.Read())
{
Response.Write(“<I id='” + R[“id”].ToString() + “'”
+ " T=‘" + R[“T”].ToString().Replace(“&”, “&”).Replace("’“, “'”).Replace(”<“, “<”) + “'”
+ " S='” + R[“S”].ToString() + “'”
+ " R=‘" + R[“R”].ToString().Replace(“&”, “&”).Replace("’“, “'”).Replace(”<“, “<”) + “'”
+ “/>”);
}
Response.Write(”
");
R.Close();
Conn.Close();

감사합니다.

2개의 좋아요

안녕하세요. 김진석입니다.

일단~ 해야 하는 일을 정리하는 게 좋을 것 같습니다.

글을 읽고 생각한 것들…

  1. asp.net core mvc로 하는 건 회사에서 하는 거니까 이미 어느 정도 동작하는 코드가 있을 것 같습니다.
  2. TreeGrid.com을 보니 DHTML 컴포넌트이고 pure javascript라고 하는 것 같네요.
  3. 컨버팅하는 부분의 로직은 C#으로 된 DB 쿼리이고 결과적으로는 HTML을 만들고 있는 것 같습니다.

전체적인 내용은 모르겠지만… 크게 아래 2가지 방법이 있을 것 같습니다.

  1. aspx 파일에서 TreeGrid의 초기 컴포넌트 값을 HTML로 내려주고 페이지가 로딩되면 ajax로 실제 데이터를 요청하여 내용을 채운다. ( 다른 컨트롤러가 받아서 DB에서 데이터 내려주게 됩니다. )

  2. aspx 파일에서 필요한 정보를 모두 읽어서 HTML을 만들어 내려보낸다.

개인적으로는 asp.net core가 처음이시면 (얼마나 처음이신지는… ^^;:wink:
빈 TreeGrid 컴포넌트를 먼저 띄워보는 건 어떨까요?
그럼 대강의 동작이 이해되실 것 같습니다.
개발을 못 하시는 건 아니신 것 같아서요. 동작만 이해하면 금방이지 않겠습니까. ㅎㅎㅎ

감사합니다.

4개의 좋아요

안녕하세요 말씀 감사합니다.

말씀해주신 것 처럼 빈 프로젝트에 Treegrid 컴포넌트를 띄워서 xml로 호출하는 방식은 쉽게 되는데
여전히 aspx 파일로 DB호출하는건 잘 안되네요 ㅎㅎ
(매우 쉽게 해결할 수 있는 것으로 생각이 되는데 제가 웹은 정말 초짜라서 그런것 같습니다.ㅎㅎ)

현재 코드를 보면 말씀하신 2번 방법을 사용하고 있는데 aspx파일을
asp.net core mvc에서는 바로 사용할 수 없다보니 헤딩을 하고 있습니다 ㅎㅎㅎ

감사합니다.

2개의 좋아요

안녕하세요. 김진석입니다.

asp.net core mvc라고 하셨으니까…
controller에서 DB에 접근하고 view에서 HTML을 만든다.
이렇게 하고 계실 거라 믿습니다. ㅎㅎㅎ

그럼 controller에서 view로 데이터를 못 넘기시는 것일 수 도 있겠다는 생각이 드네요??

이번엔 맞기를 ㅋㅋㅋㅋ
감사합니다.

3개의 좋아요

안녕하세요.

안타깝게도… 개발 방향이 html과 js로 변경 되어서 asp 없이 진행될 것 같습니다…

많은 조언 해주셨는데 좋은 소식이 아니라 죄송합니다.

감사합니다.

2개의 좋아요

방법을 찾으셨으면 된 거죠 ㅋㅋㅋ
동작하면 정답이라고 생각하는 주의라서요 ㅋㅋㅋㅋ

4개의 좋아요