5

ビューに外部サイトにリンクする i-Frame があります。このサイトは、いくつかの値といくつかの構成設定を取り込みます。これらの構成設定の一部として、「CallBackURL」があります。この外部 Web サイトは、この CallBackUrl にポストします。

コントロールのアクションとして CallBackURL を指定しました。

コードを表示

<form id="testForm" method="post" target="testFrame">
  <input type="hidden" name="RequestXML" ID="RequestXML" value="<Request><RedirectURL>Account/TokenRequest</RedirectURL></Request>"
</form>

<iframe id="testFrame" name="testFrame" frameborder="0" style="width:1000px;height:500px"></iframe>

コントローラーコード

  [HttpPost]
  [ValidateInput(false)]
  public ActionResult TokenRequest()
  {
    if (Request.Form["ResponseXML"] != null)
      ViewBag.ResponseXML = Request.Form["ResponseXML"];

    return PartialView();
  }

コントローラーアクション内で次のエラーが表示されます:「潜在的に危険な request.form 値がクライアントから検出されました」

これもwebconfigで設定しました

<httpRuntime requestValidationMode="2.0" />
<pages validateRequest="false"...

私は何を間違っていますか?

EDIT 間違った web.config ファイルを編集していました。ビューフォルダー内のweb.configに追加していました。適切な場所に変更すると、機能し始めました。

4

4 に答える 4

19

上記の解決策は、MVC4 では機能しませんでした。私にとってうまくいくのは、アクションの上に属性を置くことだけです。web.config を変更したり、AllowHtml 属性を追加したりする必要はありません。

[HttpPost]
[ValidateInput(false)]
public ActionResult TokenRequest(TokenRequestModel model)
{
  if (!string.IsNullOrEmpty(model.ResponseXML))
  ViewBag.ResponseXML = model.ResponseXML;
  // ...
于 2012-08-03T09:04:23.757 に答える
2

あなたが試すことができます

  [HttpPost]
  public ActionResult TokenRequest()
  {
    if (Request.Unvalidated().Form["ResponseXML"] != null)
      ViewBag.ResponseXML = Request.Unvalidated().Form["ResponseXML"];

    return PartialView();
  }

Unvalidated() を使用すると、webconfig を編集しなくてもエラーが解消されると思います

于 2013-06-12T09:20:03.197 に答える