2016-06-28 2 views
0

데이터베이스에서 양식을 생성하려고합니다. MVC에서 데이터베이스에서 양식 생성

CREATE TABLE [dbo].[FieldsMaster](
    [FieldId] [int] IDENTITY(1,1) NOT NULL, 
    [FieldControlName] [varchar](50) NULL, 
    [FieldDataType] [varchar](20) NULL, 
    [FieldControlType] [varchar](30) NULL, 
    [DisplayLabel] [varchar](200) NULL, 
    [FieldSize] [int] NULL, 
    [FieldRegularExpression] [varchar](200) NULL, 
    [FieldOptions] [varchar](500) NULL, 
    [OptionalQuery] [varchar](200) NULL, 
    [REMessage] [varchar](150) NULL, 
    [FieldRequired] [bit] NULL, 
    [FRMessage] [varchar](150) NULL 
) 

은 지금이 양식을 내 SQL의 DB에 저장되어있는 필드들이 테이블

insert into FieldsMaster (FieldControlName,FieldDataType,FieldControlType,DisplayLabel,FieldSize,FieldRegularExpression, 
FieldOptions,OptionalQuery,REMessage,FieldRequired,FRMessage,IsActive) 
values 
('txtOtherInfo','varchar','TextArea','Other Information',400,NULL, 
NULL,NULL,NULL,0,NULL) 

insert into FieldsMaster (FieldControlName,FieldDataType,FieldControlType,DisplayLabel,FieldSize,FieldRegularExpression, 
FieldOptions,OptionalQuery,REMessage,FieldRequired,FRMessage,IsActive) 
values 
('txtTitle','varchar','TextBox','Title',100,NUll, 
NULL,NULL,NULL,1,'Please enter title') 

을 위해 일부 데이터를 생성합니다. mvc에서 양식을 생성하고 싶습니다. 모델 작성 방법 /보기에서 양식을 생성하는 방법? 나는 정말로 여기에서 혼란 스럽다. 귀하의 도움은 정말로 감사하겠습니다. 당신이 데이터베이스에서 직접 양식을 추가하려면 양식 FieldsMaster

Other Information(as label) : TextArea (With Id as txtOtherInfo) 
Title (as Label)   : TextBox (With Id as txtTitle) 
+0

** 데이터베이스를 먼저 생성하거나 데이터베이스를 생성하려면 먼저 ** 데이터베이스 우선 : [예] (https://www.asp.net/mvc/overview/getting-started/database-first- 개발/설정 데이터베이스) 코드 첫 번째 : [예] (https://msdn.microsoft.com/en-us/library/jj200620.aspx) –

+0

또한 질문은 약간 명확하지 않습니다. 'form'으로? –

+0

@ShawnYan, 양식 I은 사용자의 데이터 입력 양식을 의미합니다. 내가 분명히 했어야했는데, 저는 Entity 프레임 워크를 사용하지 않았습니다. Dapper.Net을 사용하고 있습니다. 데이터 입력 양식은 테이블 –

답변

1

의 필드에 따라 표시되어야합니다 아래에 감사

이 더 많은 아이디어를 가지고, 당신은 할 수 있습니다. 그래서 너를 각각 다른 템플릿을 대표

public int EmailTemplateId { get; set; } 
    public int Type { get; set; } 
    public string Name { get; set; }  

public enum Emailtype 
{ 
    Base = 0, 
    Recovery = 1, 
    NewAccount = 2, 
    ChangePassword = 3, 
    BlockAccount = 4, 
    UnlockAccount = 5, 
    ForgetPassword = 6 
    } 

, 그리고 템플릿보기에 당신은

<body> 
//some code of your template 
{-container-} 
</body> 
같은 것을 가지고

먼저 당신은 열거가 (이메일) 다음과 같은 모델로 할 필요가

{-container-}는 각 템플릿에 대해 변경되는 속성입니다. 그래서 당신은 새로운 당신은 당신이 당신의 첫 번째 템플릿으로이 있기 때문에 여기에 태그를 필요하지는 you'be이

<tr> 
<td>Hi {name}. Your password is {password}</td> 
</tr> 

같은 SQL 삽입 컨테이너와이 코드를 만들어

그리고 컨트롤러 :

public void NewAccount(string name, string email,string password, string user) 
    { 

     var from = model.From; 
     var loginUrl = model.LoginUrl; 
     const string title = "New Register - Stackoverflow"; 

      EmailsService sendEmail = new EmailsService 
     { 
      Subject = title, 
      To = email, 
      From = from 
     }; 
} 

      //There is our first template (Base template) 
     var templateBase = Get(Emailtype.Base); 
      //This one is template who changes (container) 
     var templateText = Get(Emailtype.NewAccount); 

    //Here you replace Name property of class for your container code 
      var body = templateBase.Name.Replace("{-container-}", templateText.Name); 


      sendEmail.EmailBody = body.Replace("{Name}", name) 
      .Replace("{Title}", title) 
      .Replace("{User}", user) 
      .Replace("{Password}", password) 
      .Replace("{Link}", loginUrl); 
     sendEmail.Send(); 
    }  

마지막으로 당신의 SQL에 당신은 그렇게 보여 ... 컨테이너의 코드를 삽입 할 수 있습니다

EmailTemplateId=1 
Type= 1 //(Recovery ones) 
Name= <tr> <td>Hi {name}. Your password is {password}</td> </tr> 

그것이 도움이되기를 바랍니다!

+0

감사합니다. 덧글 제리. 사실이 동적 데이터 입력 폼 생성의 배경은 관리자 패널 사용자가 필드를 추가 할 수있는 것과 같습니다 (디자인 타임에 하드 코딩 할 수 없으므로 런타임에 많은 필드를 추가 할 수 있습니다). 또한 데이터를 저장해야합니다. 어떤 사용자가이 필드에 입력 할 것이며이 필드를 쿼리해야합니다. 템플릿에 대한 아이디어는 좋지만 불행히도 내 경우에는 효과가 없을 것입니다. 이견있는 사람... –

관련 문제