c# - 如何知道是什么导致我的操作遇到多个线程?
问题描述
我有一个包含近 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 方法调用 在此处输入图像描述
解决方案
可能为“Email”、“City”、“Contact”和“FullName”分别调用了 Test(...) 方法。拥有 4 个线程和 4 个属性 if-s 可能并非巧合。
推荐阅读
- flutter - MethodChannel - 在通道上找不到方法的实现
- c# - 用 C# 中的正则表达式匹配零件
- javascript - 多点触控在桌面上的传单中无法按预期工作
- android - 检测是否已接听电话,如果未接听,则再次拨打另一个号码
- java - 根据事件触发器调度 Spring Batch Job
- azure-pipelines - 文件在 Azure 构建管道的命令行任务中不存在
- javascript - 对 Autodesk Forge Viewer 实施 ThreeJS Transform 控件
- python - 在 AWS 中添加侦听器规则时添加查询字符串参数或 cookie
- javascript - Javascript - 按字符串索引属性对字符串数组进行排序
- android - 为什么我的自定义视图中的数据绑定不起作用?