2013-04-18 131 views
0

我正在使用MVC4视图页面,我试图通过单击按钮将数据从文本框插入到我的MS SQL数据库中。我努力做到这一点,我想这个问题是“con.open()”,但我不知道在哪里声明它。这里是我的代码:从文本框中插入数据到数据库asp.net MVC4

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
Inherits="System.Web.Mvc.ViewPage" %> 

<script runat="server"> 

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["GreenEnergyConnectionString1"].ConnectionString); 

    protected void Button1_Click(object sender, EventArgs e) 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("insert into CUSTOMER values ('"+TextBox2.Text+"', '"+TextBox3.Text+"', '"+TextBox4.Text+"','"+TextBox5.Text+"','"+TextBox6.Text+"', '"+TextBox7.Text+"', '"+TextBox8.Text+"')",con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    TextBox8.Text = ""; 
    TextBox7.Text = ""; 
    TextBox6.Text = ""; 
    TextBox5.Text = ""; 
    TextBox4.Text = ""; 
    TextBox3.Text = ""; 
    TextBox2.Text = ""; 

} 

而在我的web.config我宣布:

<add namespace="System.Data.SqlClient"/> 
<add namespace="System.Configuration"/> 
+0

相信我,你可以用MVC做得更好吗? – ssilas777

+0

我想你的意思是使用网页表单会容易得多吗?到目前为止,我只使用MVC的。我试图用一个web表单,但当我运行它时出现错误,我想我必须更新一些东西?怎么样?在哪里? –

+2

这是一个等待发生的SQL注入攻击。 – 48klocs

回答

0

你有以上的是不是MVC。它是webforms。 <script runat="server">标签是一个死的赠品。这段代码应该在控制器动作中。当用户单击HTML表单中的HTML提交时,MVC会将请求路由到控制器操作。在这个动作中,你将编写执行sql的代码。

我强烈建议Razor over webforms语法。它更清洁,更容易处理。

+0

对,我知道了,但我不知道如何使用剃须刀,我的时间非常有限。你能给我一个完整的解决方案吗?谢谢 –

0

我认为你的方法有太多的错误或至少是次要的东西,很难直接帮助你。相反,我想我可以引导你在什么MVC的意思:

  1. 在MVC fwk你有一个模型,一个视图和一个控制器。
  2. 在您的控制器中,您创建一个模型,填充它并调用视图。
  3. 当您有表格时,通常需要2个控制器操作:一个用于显示视图,另一个用于提交表单。
  4. 当您提交表单时,您将收到模型...在MVC中,您无权访问WebForms中的表单字段(使用TextBox1.Text和runat =“server”,很明显,您不工作与MVC正确)。

除此之外,添加代码直接从视图访问数据库在几个方面是错误的......我的意思是,技术上你可以做到这一点,但你要求麻烦。

我强烈建议您下载一个示例MVC 3或4应用程序,以展开概念并进行一些测试。我建议你使用Razor来表达你的观点。

相关问题