1

我今天第一次将我一直在开发的 Web 应用程序部署到我们的测试服务器,由于某些奇怪的原因,Insert.aspx 页面模板上的“插入”超链接不起作用。它不会引发错误,我可以像这样插入远程托管的 SQL Server DB 上的相关表中:

protected void btInsert_Click(object sender, EventArgs e)
{
    BedType bt = new BedType();
    bt.Value = "Twin";
    bt.MaxSpace = 1;

    using (OEContext context = new OEContext())
    {
        context.BedTypes.Add(bt);
        context.SaveChanges();
    }
}

但是当尝试使用默认的 Insert.aspx 模板插入时,“插入”超链接不起作用(“取消”工作正常!)

Google-fu 整个下午都让我失望了。我没有想法,完全被难住了......

4

1 回答 1

0

所以,在把我的头撞在桌子上之后,我想出了这个相当奇怪的问题的答案,并想把它贴出来,以防其他人遇到同样的问题。

当我使用 NuGet 安装“AJAX 工具包”时,我的应用程序停止编译,因为它没有找到脚本管理器正在寻找的“MsAjaxBundle”Web 资源:

<asp:ScriptReference name="MsAjaxBundle" />

当我添加对 ajax 控件工具包的引用时,此代码已添加到我的 Site.Master 文件中。因为它正在寻找那个捆绑包,但它不存在,所以我做了一些谷歌搜索,找到了网络资源,并在我的 Global.asax 文件中用我的脚本管理器注册了它:

ScriptManager.ScriptResourceMapping.AddDefinition("MsAjaxBundle", new ScriptResourceDefinition
{
    Path = "~/bundles/MsAjaxJs", 
    CdnPath = "http://ajax.aspnetcdn.com/ajax/4.5/6/MsAjaxBundle.js", 
    LoadSuccessExpression = "window.Sys", 
    CdnSupportsSecureConnection = true
});

它编译并运行!但是,由于某种原因,该应用程序正在抑制“WebForm_PostBackOptions not defined”错误。一旦我发现并开始挖掘,我就被带回了我的 MsAjaxBundle 并最终意识到这是罪魁祸首。再用谷歌搜索一下,发现了这个页面:

http://stephenblog.wpengine.com/archive/2012/09/20/september-2012-release-of-the-ajax-control-toolkit

这指出了 ScriptManager 中的一些变化:

1) 我们需要用 ajaxToolkit:ToolkitScriptManager 替换 asp:ScriptManager

2) 我们需要从 ScriptReferences 中删除 MsAjaxBundle 包

3) 我们需要从 ScriptReferences 中删除 Assembly=”System.Web” 属性

我的问题就解决了。如果有比我更多知识和经验的人可以在评论中解释为什么会发生这种情况,请随意!我很高兴我通过了这个,因为这对我来说特别令人沮丧:P

于 2013-06-03T16:54:45.203 回答