【问题标题】:Returning ContentResult for Ajax Response has extra tags in .NET MVC controller为 Ajax 响应返回 ContentResult 在 .NET MVC 控制器中有额外的标签
【发布时间】:2010-11-05 19:10:14
【问题描述】:

我有一个控制器操作试图将纯文本返回到 AJAX 调用。例如-

[HttpPost]
public ActionResult SubmitAttachment(int id, HttpPostedFileBase theFile){
...
...
   return Content("Success");
}

在执行 ajax 调用的 javascript 函数中,我希望响应文本只是“成功”,但我得到的是 "<head></head><body>Success</body>"

在我 99% 的其他控制器操作中,我没有这个问题。我能想到的唯一不同之处在于,对“SubmitAttachment”的 AJAX 调用是一个带有“enctype=multipart/form-data”的表单 POST,而其他 AJAX 调用没有上传任何文件。

有没有人遇到过这种情况?如果是这样...我将如何让它返回纯文本?

注意:我也尝试过return Content("Success", "text/plain"),但这只是在“成功”字符串周围添加了额外的<pre></pre> 标签。

【问题讨论】:

  • 我认为pre 标签 - 以及您看到的其他内容 - 并不真正存在,而是由您的浏览器添加的。使用 Fiddler 和/或 curl 进行测试,而不仅仅是浏览器。

标签: .net asp.net-mvc asp.net-mvc-2


【解决方案1】:

无法重现该行为:

控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(int id, HttpPostedFileBase theFile)
    {
        return Content("Success", "text/plain");
    }
}

查看:

<script type="text/javascript" src="<%: Url.Content("~/scripts/jquery-1.4.1.js") %>"></script>
<script type="text/javascript">
    $(function () {
        $('form').submit(function () {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    alert(result);
                }
            });
            return false;
        });
    });
</script>

<form action="/" method="post" enctype="multipart/form-data">
    <input type="text" name="id" value="4" />
    <input type="submit" value="OK" />
</form>

提交表单时,服务器仅返回"Success"

【讨论】:

  •  的东西是由@TWong 的浏览器添加的。但我想你已经知道了。 :)
【解决方案2】:

我会按照 bzlm 的建议去做,使用 fiddler 对其进行测试,以确保这些标签实际上是以这种方式返回的。如果它们仍然存在,请尝试返回一个纯字符串。将返回类型设置为字符串,然后在没有 Content() 的情况下返回“成功”。如果您在返回字符串时仍然在它周围获得标签,那么您就处于另一个现实中,不可能的事情以某种方式成为可能。

【讨论】:

  • 我怀疑同样的事情,标签与浏览器相关,但奇怪的是浏览器没有为我所有其他只执行“返回内容(... )"。
  • 是的,我不知道为什么会这样。什么浏览器?
  • FireFox 是我正在测试的浏览器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 2020-06-07
相关资源
最近更新 更多