2016-06-28 5 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

** **データベースを最初に作成するか、コードファーストを使用して.Database-first:[例](https://www.asp.net/mvc/overview/getting-started/database-first-コード生成:[例](https://msdn.microsoft.com/en-us/library/jj200620.aspx) –

+0

また、あなたの質問は何を意味するのか不明ですフォームで? –

+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-}はテンプレートごとに変更するプロパティです。

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(); 
    }  
:あなたはあなたがあなたの最初のテンプレートと、このコード

とコントローラでにそれを持っているので、ここでタグを付ける必要性をドント

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

ようなSQLに挿入you'be新しいコンテナを作りましたあなたのSQLの最後に

あなたはそれがそのように示して...あなたのコンテナのコー​​ドを挿入することができます。

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

それは助けて欲しい!

+0

ありがとうコメントジェリー。実際には、この動的なデータ入力フォームの生成の背後にあるアイデアは、Adminパネルのユーザーがフィールドを追加できるようなものです(設計時にハードコードできないため、ユーザーは実行時に多くのフィールドを追加できます)。さらに、どのユーザーがこのフィールドに入力し、これらのフィールドを照会する必要があります。テンプレートのあなたの考えはいいですが、残念ながら私の場合は動作しません。何かご意見は... –

関連する問題