Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在MVC中重复插入数据,但不返回异常?_C#_Asp.net_Sql Server_Asp.net Mvc_Razor - Fatal编程技术网

C# 为什么在MVC中重复插入数据,但不返回异常?

C# 为什么在MVC中重复插入数据,但不返回异常?,c#,asp.net,sql-server,asp.net-mvc,razor,C#,Asp.net,Sql Server,Asp.net Mvc,Razor,我有一个在MVC4中RazorView引擎的数据库中插入记录的场景。我的数据正在插入,但重复了多次。我不知道为什么会这样。代码如下所示。我还想显示是否保存了数据,但我的代码没有显示我试图实现的信息,但这不起作用 型号 public class ContactUs { public int SenderId { get; set; } [Required(ErrorMessage ="Please enter your name")] [Display(Name="Ent

我有一个在MVC4中RazorView引擎的数据库中插入记录的场景。我的数据正在插入,但重复了多次。我不知道为什么会这样。代码如下所示。我还想显示是否保存了数据,但我的代码没有显示我试图实现的信息,但这不起作用

型号

public class ContactUs
{
    public int SenderId { get; set; }

    [Required(ErrorMessage ="Please enter your name")]
    [Display(Name="Enter your Name")]
    [StringLength(50,MinimumLength =3,ErrorMessage ="Name must be between 3 and 50 characters!")]
   public string Name { get; set; }

    [Required(ErrorMessage ="Please enter your email address")]
    [Display(Name="Enter your email address")]
    [MaxLength(200,ErrorMessage ="Excedding Limit")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

    [Required(ErrorMessage ="Please enter Subject")]
    [Display(Name ="Enter subject")]
    public string CompanyName { get; set; }

    [Required(ErrorMessage ="Please enter your message")]
    [Display(Name="Enter your message")]
    [DataType(DataType.Text)]
    public string Message { get; set; }
}
.cshtml代码

@using (Ajax.BeginForm("SendMail", "Home", new AjaxOptions
{
    HttpMethod = "POST",                        
    UpdateTargetId = "target",
    OnFailure = "ShowError()",
    OnSuccess = "ShowSuccess()"
}))
{
    <fieldset>
        <legend>Fill the form below and we will contact you soon</legend>
        <p>
            @Html.LabelFor(model => model.Name)<br/>
            <span class="wpcf7-form-control-wrap your-name">
                @Html.TextBoxFor(model => model.Name, new { @class = "wpcf7-form-control wpcf7-text wpcf7-validates-as-required" })
                @Html.ValidationMessageFor(model => model.Name)
            </span>

        </p>
        <p>
            @Html.LabelFor(model => model.Email)<br>
            <span class="wpcf7-form-control-wrap your-email">
                @Html.TextBoxFor(model => model.Email,new { @class= "wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email" }) 
                @Html.ValidationMessageFor(model => model.Email)                                   
            </span>
        </p>
        <p>
            @Html.LabelFor(model => model.CompanyName)<br>
            <span class="wpcf7-form-control-wrap your-subject">
                @Html.TextBoxFor(model => model.CompanyName, new {@class= "wpcf7-form-control wpcf7-text"}) 
                @Html.ValidationMessageFor(model => model.CompanyName)
            </span>
        </p>
        <p>
            @Html.LabelFor(model => model.Message)<br>
            <span class="wpcf7-form-control-wrap your-message">
                @Html.TextAreaFor(model => model.Message, new {@class= "wpcf7-form-control wpcf7-textarea"}) 
                @Html.ValidationMessageFor(model => model.Message)<br />                                   
            </span>
        </p>                            
        <p><input type="submit" value="Send Message" class="wpcf7-form-control wpcf7-submit">
        <img class="ajax-loader" src="http://www.thomasclaudiushuber.com/wp-content/plugins/contact-form-7/images/ajax-loader.gif" alt="Sending ..." style="visibility: hidden;"></p>
        <div class="wpcf7-response-output wpcf7-display-none"></div>
    </fieldset>
}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
    function ShowError() {
        $("#status").removeClass();
        $("#status").addClass("alert alert-error");
        $("#status").html("<strong>Error!</strong> There was an error posting the contact form. Please try again later.");
    }

    function ShowSuccess() {
        $("#target").removeClass();
        $("#target").addClass("alert alert-success");
    }
</script>
public ActionResult SendMail(ContactUs form)
{
    string retValue = "There was an error submitting the form, please try again later.";
    if (!ModelState.IsValid)
    {
        return Content(retValue);
    }

    if (ModelState.IsValid)
    {
        try
        {
            DataAccessLayer.DBdata objDB = new DataAccessLayer.DBdata();
            bool result = objDB.InsertData(form);
            if (result == true)
            {
                retValue = "Your Request for Contact was submitted successfully. We will contact you shortly.";
            }
            else
            {
                retValue = "There is some problem in saving data. Please try again later.";
            }
        }
        catch (Exception)
        {
            throw;
        }
    }
    return Content(retValue);
}
插入数据库的功能

public bool InsertData(ContactUs contact)
{
    SqlConnection con = null;
    string result = "";
    try
    {
        con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnection"].ToString());
        SqlCommand cmd = new SqlCommand("UserMail_InsertUpdateDelete", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@SenderId", 0);
        // i will pass zero to MobileID beacause its Primary .
        cmd.Parameters.AddWithValue("@SenderName", contact.Name);
        cmd.Parameters.AddWithValue("@EmailAddress", contact.Email);
        cmd.Parameters.AddWithValue("@CompanyName", contact.CompanyName);
        cmd.Parameters.AddWithValue("@SenderMessage", contact.Message);
        cmd.Parameters.AddWithValue("@SentDateTime", DateTime.Now);
        cmd.Parameters.AddWithValue("@Query", 1);
        con.Open();
        result = cmd.ExecuteScalar().ToString();
        return true;
    }
    catch
    {
        return false;
    }
    finally
    {
        con.Close();
    }
}
SP

Create proc UserMail_InsertUpdateDelete
@SenderId Bigint =0 ,
@SenderName varchar(50) =null,
@EmailAddress varchar(200)=null,
@CompanyName varchar(50)=null,
@SenderMessage varchar(500)=null,
@SentDateTime datetime=null,
@Query int
as
begin
if(@Query=1)
begin
insert into UserMail
(
    SenderName,
    EmailAddress,
    CompanyName,
    SenderMessage,
    SentDateTime    
)
values
(
    @SenderName,
    @EmailAddress,
    @CompanyName,
    @SenderMessage,
    @SentDateTime
)
if(@@ROWCOUNT>0)
begin
select 'Insert'
end
end
if(@Query=2)
begin
update UserMail
set
SenderName=@SenderName,
EmailAddress=@EmailAddress,
CompanyName=@CompanyName,
SenderMessage=@SenderMessage
where SenderId=@SenderId
select 'Update'
end

if(@Query=3)
begin
Delete from UserMail where SenderId=@SenderId
select 'Deleted'
end

if(@Query=4)
begin select * from UserMail
end
end

if(@Query=5)
begin
select * from UserMail where SenderId=@SenderId
end

请将SP设置为1)在您的代码中设置断点,以查看表单是否多次提交2)如果没有,请将您的SP更改为仅包含插入步骤,并查看这是否适用于您。理想情况下,每个操作都有一个sp