ビューを見つけてすべてを処理した後、ナンシーからの HTML 応答にテキスト (具体的には数行の JavaScript コード) を挿入しようとしています。After
フックは、私がこれをやりたい場所のようです。与えられたコンテキストを介してオブジェクトにアクセスできますResponse
が、そこからデータを取得しようとすると失敗します。それは型Action<Stream>
なので、メモリに書き込んでから、次のような文字列を取得しようとしました:
public HelloModule()
{
After += ctx => {
var stream = new MemoryStream();
ctx.Response.Contents.Invoke(stream);
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
var content = reader.ReadToEnd();
}
};
Get["/"] = p => View["Issues/Views/SingleIssue"];
}
しかし、これを実行すると、行で例外が発生しますctx.Response.Contents(stream);
。例外は、InvalidOperationException
それのみを述べている"CSRF is not enabled on this request"
です。
それで、私の質問は次のとおりです。ナンシーに、現在Response
作成されているHTMLへのアクセスを許可するにはどうすればよいですか? それとも、私がこれをやろうとしている方法を完全に理解していませんか? より良い方法はありますか?
編集 2:これはSuperSimpleViewEngineの問題のようです。単一のビューで新しいクリーンなプロジェクトを作成しました。SSVE はそれを再現できますが、Spark ビュー エンジンは問題なく動作します。
編集1:
要求されたとおり、さらに情報を提供します。上記のコードには、モジュールのコンストラクター全体が含まれています。途中でカスタム ブートストラップやその他のロジックはありません。このビューは、デフォルトのSuperSimpleViewEngineを使用した単純なビューで、次のように構成されています。
マスター.sshtml
<html>
<head>
<script type="text/javascript" src="/Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.22.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery-ui-1.8.21.custom.min.js"></script>
<script type="text/javascript" src="/Scripts/dais-exts.js"></script>
<link rel="stylesheet" type="text/css" href="/Content/Style.css" />
<link rel="stylesheet" type="text/css" href="/Content/jquery-ui-1.8.21.custom.css" />
@Section['Head']
</head>
<body>
@Section['Content']
</body>
</html>
SingleIssue.sshtml
@Section['Head']
<title>Hello!</title>
@EndSection
@Section['Content']
<h2>View/Edit Issue</h2>
<form id="issue-form" method="post">
<input type="hidden" name="HttpMethod" value="Put" />
<input type="submit" />
</form>
@EndSection