更新:我们告诉用户在同事的计算机上注册,到目前为止,这是解决问题的方法。我们曾预料到问题出在他们的数据组合中,所以我们检查了数据库。因为它在另一台计算机上运行,据说具有相同的配置,我们再次难过。这些计算机由其IT部门严格控制,并且应具有完全相同的限制,因为用户具有相同的角色。有没有人知道IE 9或11中哪个用户可配置的设置可能导致这个问题?
原文: 我们的ASP MVC 5模型有几个必填字段,但有两个有问题。对于3%的用户,在AJAX调用和提交帖子的帖子中,这些字段的值为NULL。
用户从服务下拉列表中进行选择,使用服务选项的ID进行AJAX调用,以填充区域落下。对于数百个用户,IIS日志和数据库跟踪显示调用通过正确的参数进行。他们看到正确筛选的列表。但是,对于少数用户,参数为null,并且调用返回所有区域的未过滤列表。我们在DB跟踪中看到null参数。
用户从区域下拉列表中进行的选择会使用服务和区域选项的ID进行AJAX调用以填充位置下拉列表。对于数百个用户,IIS日志和数据库跟踪显示调用通过正确的参数进行。他们看到正确筛选的列表。但是,对于少数用户,参数为null,并且调用返回所有位置的未过滤列表。我们在DB跟踪中看到null参数。
有问题的少数用户滚动浏览下拉菜单以选择角色,服务,区域和的有效组合位置即可。然后他们点击"提交"而且,帖子中的值中缺少服务和区域选项。这两个选项都是NULL,因此模型上的[Required]属性使用户在同一页面上留下一条唠叨的消息,然后输入服务"和"输入地区。"对于这些少数用户,对于AJAX帖子或提交帖子,Region和Service始终为null。其他领域都很好。
所有用户都在IE11上。同一办公室中的其他用户没有问题。 jQuery库是从我们的网站下载的,没有第三方下载。
以下是Index.cshtml的相关代码
<div class="RegistrationFieldLine">
<label for="rolesid" class="RegistrationFieldLabel">User Type*</label>
<span class="RegistrationFieldBox">
@Html.DropDownList("Roles", ViewData["RoleId"] as SelectList, "SELECT ROLE TYPE ------------------------", new { id = "rolesid", @class = "RegistrationFieldBox" })
</span>
<span class="RegistrationFieldError">@Html.ValidationMessage("Roles")</span>
</div>
<div id="servicetxt" class="RegistrationFieldLine">
<label for="serviceid" class="RegistrationFieldLabel">Service*</label>
<span class="RegistrationFieldInput">
<select id="serviceid" name="serviceid" class="RegistrationFieldBox"></select>
</span>
<span class="RegistrationFieldError">@Html.ValidationMessage("Service")</span>
</div>
<div id="regiontxt" class="RegistrationFieldLine">
<label for="regionid" class="RegistrationFieldLabel">Region*</label>
<span class="RegistrationFieldInput">
<select id="regionid" name="regionid" class="RegistrationFieldBox"></select>
</span>
<span class="RegistrationFieldError">@Html.ValidationMessage("Region")</span>
</div>
<div id="regiontxt" class="RegistrationFieldLine">
<label for="regionid" class="RegistrationFieldLabel">Region*</label>
<span class="RegistrationFieldInput">
<select id="regionid" name="regionid" class="RegistrationFieldBox"></select>
</span>
<span class="RegistrationFieldError">@Html.ValidationMessage("Region")</span>
</div>
$("#serviceid").change('click', function () {
//$('#regiontxt').show();
//$('#regionid').show();
getRegionByService($(this).val());
document.getElementById('hservice').value = $(this).val();
$("#regionid").change('click', function () {
//$('#mtftxt').show();
//$('#mtfid').show();
getMTFByServiceRegion($(this).val(), document.getElementById('serviceid').value);
document.getElementById('hregion').value = $(this).val();
});
function getRegionByService(regionId) {
var token = $('input[name="__RequestVerificationToken"]').val();
var headers = {};
headers['__RequestVerificationToken'] = token;
var id = regionId;
$.ajax({
type: "POST",
headers: headers,
url: "../Registration/UpdateRegionIds/",
data: JSON.stringify({ "id": id }),
dataType: "json",
contentType: "application/json",
success: function (data) {
$('#regionid').empty();
$.each(data, function (i, data) {
if (!data.RegionID == "") {
var div_data = "<option value='" + data.RegionID + "'>" + data.RegionName + "</option>";
$(div_data).appendTo('#regionid');
}
});
document.getElementById('hregion').value = document.getElementById('regionid').options[0].value;
getMTFByServiceRegion(document.getElementById('regionid').options[0].value, regionId);
},
error: function (data) {
//alert(data.RegionID);
}
});
}
来自控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Exclude = "model")] MyUser model, FormCollection reg)
{
string result = string.Empty;
userData = Session["userData"] as MyProject.Models.users.UserCred;
filter = new filteredRoles();
filter.checkRoles(model);
if (model.locations.Single() == "")
ModelState.AddModelError("locations", "Please select one or more location's");
if (ModelState.IsValid)
{
result = RegisterUser(model, reg);
if (result != "success")
{
ViewBag.Result = result;
return View("Error");
}
else
{
ViewBag.result = "Success";
ViewBag.first = model.Firstname;
ViewBag.last = model.Lastname;
ViewBag.email = model.Email;
ViewBag.phone = model.Phone;
ViewBag.expiration = model.ExpirationDate;
}
}
else
{
ViewBag.result = "Error";
MyUser appusr = new MyUser();
ViewBag.RegionId = new SelectList(appusr.regionList(), "RegionID", "RegionName", regiong);
ViewBag.ServiceId = new SelectList(appusr.serviceList(), "locationServiceID", "locationServiceName", serviceg);
ViewBag.RoleId = new SelectList(appusr.roleList(), "ABACUSUserRoleID", "UserRole", model.Roles);
List<String> locationlist = new List<String>();
string[] yu = locationg.Split(',');
if (yu != null)
{
foreach (var x in yu)
{
locationlist.Add(x);
}
}
ViewBag.locationId = new MultiSelectList(appusr.locationList(), "locationSiteID", "locationSiteName", locationlist);
return View("Index", model);
}
return View("RegistrationResult", model);
}