为什么预期值仅在我在调试模式下运行代码时出现,但在不调试时中断,以及如何解决此问题
Why does expected values only occur when I run my code in debug mode, but breaks when I aren't debugging, and how can I fix this?
我对以下代码感到头疼,想知道是否有人可以帮助我。
我有一个名为 Details.aspx 的视图,位于一个名为 project 的文件夹中。在详细信息视图中,我有以下关键代码片段,这让我头疼。
<script type="text/javascript">
var Global_ProjectID = <%:Model.ProjectID%>; //Gets the project ID from Project Table In model
</script>
表单标记 ( <form action="<%: ResolveUrl("~/Issue/AddIssue") %>" method="post">
) 内驻留着以下代码:
<p>
<input type="submit" class="submit small" value="Add Issue" onclick="return IssueSubmitForm()"/>
or <a href="">cancel</a></p>
然后我还有一些Javascript可以与我的控制器交谈,称为IssueController,方法称为AddIssue
。<script type="text/javascript">
var PostBackUrl = "<%:ResolveUrl("~/Issue/AddIssue")%>";
//Front-end Validation here
function IssueSubmitForm() {
var PostBackData = {
Title: $("input[name=Title]").val(),
Details: $("textarea[name=Details]").val(),
ReportedBy: $("input[name=ReportedBy]").val(),
Priority: $("select[name=Priority]").val(),
ProjectID: Global_ProjectID
};
$.post(PostBackUrl,PostBackData);
}
</script>
这将获取输入到窗体中的信息(来自各种 Web 控件),并从Global_ProjectID
在我的控制器中,以下方法是从我的 JavaScript 调用的方法
[HttpPost]
public ActionResult AddIssue(Models.Issue issue)
{
Models.Issue newIssue = new Models.Issue()
{
Title = issue.Title,
DateLogged = DateTime.Now,
Status = 0,
ReportedBy = issue.ReportedBy,
Priority = issue.Priority,
ProjectID = issue.ProjectID,
};
return View("SomeOtherViewSomewhere");
}
现在这是奇怪的部分。
我的所有字段(如标题、报告者等)都按原样填写,即它实际上包含我希望它包含的值 - 我填写到表单中的数据。ProjectID 总是恰好为 null,而它实际上应该包含一个整数值。
当我在浏览器中激活javascript上的调试器时,我看到ProjectID确实被填充了,如果我添加了以下代码Alert(Global_ProjectID);
,它还给了我一个弹出窗口,其中包含我需要的值。
但是,当我在没有调试的情况下运行这些代码段时,ProjectID 始终为 null。可悲的是,这是一个我必须反复使用的值,而 null 根本行不通
我该怎么做才能修复此代码?我让其他程序员看过它,他们也和我一样难倒。
我建议研究Javascript范围和提升 - JS在变量和函数初始化顺序方面并不总是以您期望的方式运行。
您可以通过调整IssueSubmitForm
函数以接受ProjectID
作为参数来解决此问题,并在提交按钮上使用onclick="return IssueSubmitForm(Global_ProjectID)"
...
或者更好的是,删除内联函数调用并在页面加载到$(document).ready()
事件后绑定提交事件。
- 如何在vs2002中调试html页面
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 高亮显示与数组字符串一起使用时文本插件中断
- 如何在visualstudio中调试web api时编辑javascript文件
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- 如何调试Javascript代码或函数
- AngularJS ui路由器html5模式中断路由
- 递归函数中断
- Javascript-在文本区域中断,但不在段落中中断
- 基于Web的JS调试库
- 调试此代码?警报不起作用
- console.assert失败时中断chrome调试器
- 如何让 Chrome 调试器在处理未定义的变量时中断或出错
- 为什么预期值仅在我在调试模式下运行代码时出现,但在不调试时中断,以及如何解决此问题
- 嵌套循环中出现意外中断;t显示在调试器中
- Chrome JavaScript调试-如何保存断点之间的页面刷新或中断通过代码
- Visual Studio 2013 Update 2中断了javascript调试
- IE8:Jscript调试器中的问题.JScript运行时中断错误:权限被拒绝
- 使用“下一个中断”进行调试时如何排除 setTimeout 或 setInterval 类型语句