2013-08-21 57 views
1

我米使用控制器插入数据,插入数据

SignUpcontroller.cs

[HttpPost] 
public ActionResult Index(SignUpModel sm) 
{ 

using(DataClassesDataContext dc= new DataClassesDataContext()) 
{ 
Dummytable dm= new Dummytable(); 
{ 
dm.Name=sm.password; 
} 
//then conncetion string and submit 
} 
} 

和重定向

我的问题是,它是正确的写控制器模块在此代码或者我需要把它写在模型模块,如果我需要把它写在模型模块那么如何定义的setter帮助我

回答

0

的实施工作,我JST给类的内存从控制器

[HttpPost] 
public ActionResult Index(SignUpModel sm) 
{ 
ISignUpModel ISign= (ISignUpModel)this.sm; 
ISign.Insert(sm); 
} 

感谢所有的人铸造的帮助界面,因为你我的全部学习这个:)

和在SignUpModel.cs,是signupmodel.cs实施

3

它在数据访问层中移动所有数据访问代码是更好的做法。所以简单地把这个代码放在一个单独的类中,你可以从你的控制器中引用和调用。例如,你可以定义将定义不同的操作界面:

public interface IRepository 
{ 
    void Insert(SignUpModel model); 
} 

,然后有一个正在与你正在使用(EF为例)的数据访问技术的具体实施:

public class RepositoryEF : IRepository 
{ 
    public void Insert(SignUpModel model) 
    { 
     using(DataClassesDataContext dc= new DataClassesDataContext()) 
     { 
      Dummytable dm = new Dummytable(); 
      dm.Name = sm.password; 
     } 
    } 
} 

,下一步是让你的控制器利用这个资源库作为构造依赖性:现在所有剩下的就是拿起一些DI框架和线

public class SomeController : Controller 
{ 
    private readonly IRepository repo; 
    public SomeController(IRepository repo) 
    { 
     this.repo = repo; 
    } 

    [HttpPost] 
    public ActionResult Index(SignUpModel sm) 
    { 
     this.repo.Insert(sm); 

     ... 
    } 
} 

依赖关系。

这样,你有你的控制器逻辑和数据访问层之间的明确分工。这将允许您分离测试应用程序的各个层次。

+0

在那里我已经写了吸气二传手正常“的命名为ISignUp用插入法界面”?是否可以在该模块中包含更多课程? – Debasish

+0

您可以在单独的.cs文件中定义接口和实现。 –

+0

是界面是强制需要的吗? – Debasish

0

第一个问题是哪里是你的DataAccessLayer

所以更好的做法是在写读另一个类的代码和写数据库值。

controller只对UI逻辑

,你可以使用Interface为增加可重用性原因和单元测试。

enter image description here

+0

我已经使用DataClasses.dbml – Debasish

0

这是不常见的用于重要数据存储/访问等注册。考虑网络安全工具,不要直接处理这种类型的数据。或者改变你的意思来处理普通数据。

+0

我新与MVC我只是想知道我应该把那个代码放在哪里? – Debasish