首页 > 解决方案 > 如何知道是什么导致我的操作遇到多个线程?

问题描述

我有一个包含近 5 个字段的简单表单提交,在提交时它运行到 4 个线程,因此在单个 post 方法调用中将 4 个条目保存在表中。我附上了一张图片和代码,说明我面临的问题的相关性。

我的控制器:

public ActionResult Test(CustomerOrderVM CustomerOrderVM)
{
    try
    {
        if (CustomerOrderVM.Email == "")
        {
            ModelState.AddModelError("Email", "Please enter valid Country");
        }

        if (CustomerOrderVM.City == "" || CustomerOrderVM.City == "< Select City >")
        {
            ModelState.AddModelError("City", "Please enter valid City");
        }

        if (CustomerOrderVM.Contact == "")
        {
            ModelState.AddModelError("Contact", "Please enter valid Contact Number");
        }

        if (CustomerOrderVM.FullName == "")
        {
            ModelState.AddModelError("FullName", "Please enter valid FullName");
        }

        if (ModelState.IsValid)
        {
            tblCustomerOrder _tblCustomerOrder = new tblCustomerOrder();

            _tblCustomerOrder.FullName = CustomerOrderVM.FullName;
            _tblCustomerOrder.Address = CustomerOrderVM.Address;
            _tblCustomerOrder.City = CustomerOrderVM.City;
            _tblCustomerOrder.Contact = CustomerOrderVM.Contact;
            _tblCustomerOrder.Email = CustomerOrderVM.Email;
            _tblCustomerOrder.Proceeded = false;

            db.tblCustomerOrders.Add(_tblCustomerOrder);

            db.SaveChanges();

            return Json(CustomerOrderVM);
        }
        else
        {
            return Json("");
        }
    }
    catch (Exception)
    {
        ViewBag.Error = "Error";
        return Json(ViewBag.Error);
    }
}

我的视图模型:

public class CustomerOrderVM
{
    public int Id { get; set; }

    [Required]
    [RegularExpression(@"^[a-zA-Z\s]+$", ErrorMessage = "Please enter valid name")]
    [Display(Name = " Name")]
    [StringLength(200, ErrorMessage = "Please enter valid name", MinimumLength = 3)]
    public string FullName { get; set; }

    [DataType(DataType.EmailAddress)]
    [StringLength(150, ErrorMessage = "Please enter valid Email Id", MinimumLength = 5)]
    [Display(Name = "Email ID")]
    public string Email { get; set; }

    [Required]
    [RegularExpression("^[0-9]*$", ErrorMessage = "Please enter valid  Mobile No")]
    [StringLength(15, ErrorMessage = "Please enter valid Mobile No", MinimumLength = 9)]
    [Display(Name = "Mobile No")]
    public string Contact { get; set; }

    [Required]
    [Display(Name = "Street Address")]
    [StringLength(200, ErrorMessage = "Please enter valid address", MinimumLength = 7)]
    [DataType(DataType.MultilineText)]
    public string Address { get; set; }

    [Required]
    [Display(Name = "City")]
    public string City { get; set; }

    [Display(Name = "Proceeded")]
    public bool? Proceeded { get; set; }
}

我的观点 :

@model applicaton.Models.ViewModels.CustomerOrderVM

<script src="~/Scripts/jquery-1.10.2.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>



 @using (Ajax.BeginForm("Index", "Home", new AjaxOptions
    {
        HttpMethod = "POST",
        OnSuccess = "OnSuccess",
        OnFailure = "OnFailure",
        LoadingElementId = "progress"
    }))
    {

        <input type="hidden" name="product" value="fent">
        <input type="hidden" name="affiliate" value="">
        <input type="hidden" name="page" value="index">
        <input type="hidden" name="short_referrer" value="">
        <input type="hidden" name="long_referrer" value="">
        <input type="hidden" name="ref" value="">
        <input type="hidden" name="free" value="">
        <input type="hidden" name="discount" value="">
        <input type="hidden" name="avial" id="avial" value="0">
        <input type="hidden" name="pack" id="pack" value="">


 <div class="form-box">
    @Html.EditorFor(model => model.FullName, new { htmlAttributes = new { @class = "form-control MaxWidth uppercase", @placeholder = "Name" } })
    @Html.ValidationMessageFor(model => model.FullName, "", new { @class = "text-danger" })

    </div>



     <div class="form-box">
            @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control MaxWidth uppercase", @placeholder = "Email" } })
            @Html.ValidationMessageFor(model => model.Email, "", new { @class = "text-danger" })
        </div>


     <div class="form-box">
                @Html.EditorFor(model => model.Contact, new { htmlAttributes = new { @class = "form-control", @placeholder = "Contact : 923xxxxxxxxx", @maxlength = "12" } })
                @Html.ValidationMessageFor(model => model.Contact, "", new { @class = "text-danger" })
            </div>
            <div class="form-box">
               @Html.EditorFor(model => model.Address, new { htmlAttributes = new { @class = "form-control MaxWidth uppercase auto-text-area", @placeholder = "Street Address" } })
                @Html.ValidationMessageFor(model => model.Address, "", new { @class = "text-danger" })
            </div>
            <div class="form-box">
                @Html.DropDownListFor(m => m.City, new SelectList(new string[] {"< Select City >",//Cities}, "< Select City >"), new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.City, "", new { @class = "text-danger" })



  </div>
    <button type="submit" class="button redcolor large `enter code here`submit-form">Place My Order!</button>

}

这是一个问题,有 4 个线程正在运行,由黄色荧光笔指出,附在下面

从浏览器生成的 POST 方法调用 在此处输入图像描述

标签: c#asp.net-mvcmultithreading

解决方案


可能为“Email”、“City”、“Contact”和“FullName”分别调用了 Test(...) 方法。拥有 4 个线程和 4 个属性 if-s 可能并非巧合。


推荐阅读