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 Toolkit」をインストールすると、スクリプト マネージャーが探していた「MsAjaxBundle」Web リソースが見つからなかったため、アプリのコンパイルが停止しました。

<asp:ScriptReference name="MsAjaxBundle" />

このコードは、ajax コントロール ツールキットへの参照を追加したときに、Site.Master ファイルに追加されました。そのバンドルを探していたのに存在しなかったので、少しグーグルで検索して Web リソースを見つけ、スクリプト マネージャーの 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 が定義されていません」というエラーを抑制していました。それを見つけて掘り下げ始めると、MsAjaxBundle に戻され、最終的にそれが原因であることに気付きました。もう少しグーグルして、このページに出くわしました:

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

これは、ScriptManager のいくつかの変更を示しています。

1) asp:ScriptManager を ajaxToolkit:ToolkitScriptManager に置き換える必要があります。

2) ScriptReferences から MsAjaxBundle バンドルを削除する必要があります。

3) ScriptReferences から Assembly=”System.Web” 属性を削除する必要があります。

そして、私の問題は解決しました。私よりも多くの知識と経験を持っている人がコメントでなぜこれが起こったのかを説明できるなら、遠慮なく! 私にとって特にイライラしていたので、これを乗り越えられたことをただ嬉しく思います:P

于 2013-06-03T16:54:45.203 に答える