C# 提交到新页面并下载文件

C# 提交到新页面并下载文件,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我有允许用户在SQL数据库中创建和编辑记录的代码。这个很好用。但是,现在我希望它输出正在执行的操作的SQL脚本。我不知道该怎么做。这是我目前的代码: @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> @Html.ValidationSummary(true) <div class="form-group">

我有允许用户在SQL数据库中创建和编辑记录的代码。这个很好用。但是,现在我希望它输出正在执行的操作的SQL脚本。我不知道该怎么做。这是我目前的代码:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        @Html.ValidationSummary(true)
        <div class="form-group">
            <strong>ID:</strong>
            <div class="col-md-10">
                <p>
                    @Html.EditorFor(model => model.ID)
                    @Html.ValidationMessageFor(model => model.ID)
            </div>
        </div>
        <br />
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <button type="submit" class="btn btn-primary">Submit <i class="fa fa-caret-right"></i></button>
            </div>
        </div>
    </div>
}

public ActionResult Edit(int id)
{
    using (var client = new XServiceClient())
    {
        X x = client.Find(id);
        if (x == null)
        {
            return HttpNotFound();
        }
        return View(x);
    }
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(X x)
{
    if (ModelState.IsValid)
    {
        using (var client = new XServiceClient())
        {
            client.Edit(x);
            return Redirect("~/Home/Index");
        }
    }
    return View(x);
}
我见过的大多数系统都建议在该文件行上返回。然而,这对程序的其余部分不起作用。
如何让我的提交按钮将数据提交到服务器,并将文件下载给用户?

以前,人们曾多次以多种不同的形式提出这一问题。答案是你不能。你只吃了一口苹果。要么返回视图或类似重定向的内容,要么返回文件。你不能两者都做。我想这可以解释为什么要找到一个关于如何做这件事的答案是如此困难。嗯,我找到了完成基本任务的方法。谢谢你的帮助。
using (var client = new XServiceClient())
{
    var sessionID = Guid.NewGuid().ToString("N");
    var filename = String.Format("Session-{0}.sql", sessionID);
    var sqlString = "Update SQL String Stuff";
    File(System.Text.UTF8Encoding.UTF8.GetBytes(sqlString), "text/plain", filename);
    client.Edit(x);
    return Redirect("~/Home/Index");
}