Jquery 为什么;传递给getElementById()的空字符串;?
所以,我有一个非常奇怪的场景。下面是它是如何分解的。我有不同的角色授权用户能够在“管理工具”中编辑配置文件。这种能力中有一点似乎表现得非常愚蠢,我一辈子也弄不明白为什么!当您担任SuperUsersRole角色时,代码工作正常。但是,当您担任StandardUsers角色时,我得到了这个javascript错误,它失败了。还有一个问题,只有当代码没有在本地运行时,它才会失败。这是用MVC编写的,因此无需进一步ado,代码如下: 观点:Jquery 为什么;传递给getElementById()的空字符串;?,jquery,.net,model-view-controller,Jquery,.net,Model View Controller,所以,我有一个非常奇怪的场景。下面是它是如何分解的。我有不同的角色授权用户能够在“管理工具”中编辑配置文件。这种能力中有一点似乎表现得非常愚蠢,我一辈子也弄不明白为什么!当您担任SuperUsersRole角色时,代码工作正常。但是,当您担任StandardUsers角色时,我得到了这个javascript错误,它失败了。还有一个问题,只有当代码没有在本地运行时,它才会失败。这是用MVC编写的,因此无需进一步ado,代码如下: 观点: @{ ViewBag.Title = "ChangeUser
@{
ViewBag.Title = "ChangeUsername";
}
@using (Ajax.BeginForm("ChangeUsername", "User", new { uniqueUserId = @Model.UserGuid }, new AjaxOptions() { InsertionMode = InsertionMode.Replace, UpdateTargetId = "changeUname" }))
{
<div class="form_section">
<h3>Update User Name:
</h3>
<div class="form_item">
<div class="frm_label">
<label for="username">
@AdminResource.CurrentUserName
</label>
</div>
<div class="item">
<p>@Model.UserName</p>
</div>
</div>
<div class="form_item">
<div class="frm_label">
<label for="username">
@AdminResource.UserName
</label>
</div>
<div class="item">
@Html.TextBoxFor(model => model.NewUsername, new { id = "uName_change" }) @Html.ValidationMessageFor(model => model.NewUsername)
@if (Model.AlternateUsernames != null && Model.AlternateUsernames.Count() != 0)
{
<p>
<strong>Suggested usernames:</strong><br />
@foreach (var username in Model.AlternateUsernames)
{
<input type="radio" name="un" value="@username" onclick="setText(this);" />@username<br />
}
</p>
}
</div>
</div>
<div class="form_item">
<div class="frm_label">
<label for="password">
</label>
</div>
<div class="item">
<input type="submit" name="submit" value="Update Username" class="btn_primary" />
</div>
</div>
</div>
@Html.HiddenFor(model => model.UserGuid)
@Html.HiddenFor(model => model.UserName)
}
就像我之前说过的,这只发生在您担任某个角色时,并且代码没有在本地运行时,这让我感到困惑。提前谢谢
编辑**
这里是控制台指出错误来源的地方,这是一个jquery.unobtrusive.min.js文件:
/*
**用于jQuery的不引人注目的Ajax支持库
**版权所有(C)微软公司。版权所有。
*/
函数(a){var b=“unobtrusiveAjaxClick”,g=“unobtrusiveValidation”;函数c(d,b){var a=window,c=(d | | |“).split(“.”);而(a&&c.length)a=a[c.shift()];if(typeof a==”函数)返回a;b.push(d);返回函数.constructor.apply.apply(null,b)}函数d(a){返回a==”GET“| | | a=”POST”}函数f(b,a){返回b.a=”请求头重写(“HTTP-setx”)方法函数h(c,b,e){var d;if(e.indexOf(“应用程序/x-javascript”)!=-1)返回;d=(c.getAttribute(“数据ajax模式”)| |“).toUpperCase();a(c.getAttribute(“数据ajax更新”)。each(函数f,c){var e;切换(d){case”之前:e=c.firstChild;a(“”.html(b).contents()。each(函数(){c.insertBefore(这个,e)});break;case之后是“:a(“”)函数e(b,e){var j,k,g,i;j=b.getAttribute(“数据ajax方法”);if(j&&!window.confirm(j))返回;k=a(b.getAttribute(“数据ajax加载”);i=b.getAttribute(“数据ajax加载持续时间”)|0;a.extend(e,{type:b.getAttribute(“数据ajax方法”)|未定义,url:b.getAttribute(“数据ajax加载时间”))||未定义,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute(“数据ajax开始”),[“xhr”])。apply(这是参数);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute(“数据ajax完成”),[“xhr”,“status”])。apply(这是参数)},成功:function(a,e,d){h(b,a,d.getResponseHeader(“内容类型”)|c(b.getAttribute(“data ajax success”),[“data”,“status”,“xhr”]).apply(这个,参数)},错误:c(b.getAttribute(“data ajax failure”),[“xhr”,“status”,“error”]);e.data.push({name:“X-request-With”,value:“XMLHttpRequest”});g=e.type.toUpperCase();if(!d(g)){e.type=“POST”;e.data.push({name:“X-HTTP-Method-Override”,value:g})函数i(c){var b=a(c).data(g);return!b | | | | b.validate()}a(“a[data ajax=true]”)live(“click”,函数(a){a.preventDefault();e(this,{url:this.href,type:“GET”,data:[]));a(“form[data ajax=true]input[type=image]”。live(“click”,函数(c){var g=c.target name,d=a(c.target),f=d.parents)([form form 0],e=d.offset());data:[]name:[](c.pageX-e.left)},{name:g+“.y”,value:Math.round(c.pageY-e.top)};setTimeout(函数(){a(f).removeData(b)},0});a(“form[data ajax=true]:submit”).live(“click”,函数(c){var e=c.target.name,d=a(c.target).父函数(形式)[0];a(形式)};数据(b,e?[{{{name:e,value:c.target value:c.target value:c.value]:[]:[];超时(函数())(形式){a(形式){a(形式)};removeData a(形式)].live(“submit”,函数(d){var c=a(this).data(b)|【】;d.preventDefault();if(!i(this))返回;e(this,{url:this.action,type:this.method | |“GET”,数据:c.concat(a(this.serializeArray())})(jQuery)能否发布有关错误的相关代码:
“传递给getElementById()的空字符串”?
???这是相关代码?在提交表单以更改用户名时出错…但哪行会引发此错误?发布呈现的客户端代码会更相关它会在jquery.unobtrusive.min.js文件中引发错误。它已缩小,不确定如何在此处正确显示此错误。。。
namespace AdminTool.Models.ViewModel
{
public class ChangeUsername
{
[Required(ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameErrorRequired")]
[Display(ResourceType = typeof(AdminResource), Name = "UserName", Description = "UserNameDescription")]
[NotRegEx(@"^[Mm][rR][Ii]\d{4}|^[mM]\d{6}", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameAlreadyExists")]
[RegularExpression(@"^([a-zA-Z0-9!\@#\$%\^&\(\)-_\+\.'`~/=\?\{\}\|]){6,255}$", ErrorMessageResourceType = typeof(AdminResource), ErrorMessageResourceName = "UserNameFormatError")]
public string NewUsername { get; set; }
public String UserName { get; set; }
public Guid UserGuid { get; set; }
public List<string> AlternateUsernames { get; set; }
}
}
[HttpGet]
[ClaimsPrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Resource = Resources.User, Operation = Operations.Edit)]
public ActionResult ChangeUsername(Guid uniqueUserId)
{
User user = UserManager.GetUser(uniqueUserId);
AuthorizationHelper.ConfirmAccess(Resources.User, Operations.Edit, user);
ChangeUsername model = new ChangeUsername(){UserGuid = user.Identifier,NewUsername = user.Username};
return View(model);
}
[HttpPost]
[ClaimsPrincipalPermission(System.Security.Permissions.SecurityAction.Demand, Resource = Resources.User, Operation = Operations.Edit)]
public ActionResult ChangeUsername(ChangeUsername changeUsername)
{
User usr = UserManager.GetUser(changeUsername.UserGuid);
AuthorizationHelper.ConfirmAccess(Resources.User, Operations.Edit, usr);
if (!ModelState.IsValid)
{
return View(changeUsername);
}
//setup request
SupportUser su = (SupportUser)ViewData["SupportUser"];
RequestData rqd = new RequestData(GetApplicationIdentifer(usr), su.clientIP, su.lanID);
UserUsernameChangeRequest request = new AdminUsernameChangeRequest(rqd,usr,changeUsername.NewUsername);
UserUsernameChangeResponse response = UserManager.ChangeUserUsername(request);
if (response.Status == UserProcessorStatus.Success)
{
var message = ("User has been updated successfully");
TempData["message"] = message;
return PartialView("_NewUsername", changeUsername);
}
switch (response.Status)
{
case UserProcessorStatus.DuplicateUsername:
{
ModelState.AddModelError("NewUsername", "Duplicate username");
changeUsername.AlternateUsernames = response.AlternateUsernames;
return PartialView(changeUsername);
}
default:
{
ModelState.AddModelError("NewUsername", String.Format("An unexpected error occured. Error Code:{0}, Message:{1}", response.Status, response.Message));
return PartialView(changeUsername);
}
}
}