【问题标题】:What is the most likely cause of the 500 error here?这里出现 500 错误的最可能原因是什么?
【发布时间】:2016-05-10 22:38:52
【问题描述】:

我将向您展示所涉及的所有活动部件。

查看:

@{
    ViewBag.Title = "Partners";
}
<div class="row">
    <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
        <h1>Partners</h1>
        <p>Click to see survey answers or delete partner</p>
        <table class="table">
            <thead>
                <tr>
                    <th>Partner Name</th><th>Actions</th>
                </tr>
            </thead>
            <tbody>
                @foreach ( var NameIdPair in ViewBag.PartnersAndIds )
                {
                    <tr>
                        <td>
                            @NameIdPair.Name
                        </td>
                        <td>
                            <button class="btn btn-info view-partner-surveys" data-partnerid="@NameIdPair.Id">View Survey Answers</button>
                            <button class="btn btn-warning delete-partner" data-partnerid="@NameIdPair.Id">Delete Partner</button>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>
</div>
@section bottommost {
    <script type="text/javascript">
        $('.delete-partner').click(function () {
            var row = $(this).closest('tr');
            $.ajax({
                method: 'POST',
                url: 'DeletePartner',
                data: { pid: $(this).attr('data-partnerid') },
                dataType: 'json',
                processData: false,
                beforeSend: function () {
                    row.addClass('processing');
                },
                success: function (retinfo) {
                    if (retinfo.DeletedSuccessfully) { row.remove(); }
                    else { alert("Error .."); row.removeClass('processing'); }
                },
                error: function () { alert("Error"); row.removeClass('processing'); }
            });
        });
    </script>
}

使用$('.delete-partner').click 调用的 AJAX 调用出现问题。处理请求的控制器很简单

[HttpPost]
public ActionResult DeletePartner ( int pid )
{
    return Json(new { DeletedSuccessfully = this._Db.DeletePartner(pid) });
}

在由

定义的模型中使用了DeletePartner方法
public bool DeletePartner ( int id )
{
    SqlCommand cmd = new SqlCommand("DeletePartner", this._Conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@id", id);
    this._Conn.Open();
    bool succeeded = cmd.ExecuteNonQuery() == 1 ? true : false;
    this._Conn.Close();
    return succeeded;
}

调用它的存储过程很简单

CREATE PROCEDURE DeletePartner
    @id INT
AS
    DELETE FROM Partners WHERE id=@id

知道我哪里出错了吗?

【问题讨论】:

  • 自行查找错误 - 看看如何:stackoverflow.com/questions/5385714/…
  • 您检查过 ajax url 是否正常工作。以确保您在控制器中放置了一个断点。
  • 500 Internal Server Error表示您的控制器代码正在抛出异常。你需要调试你的代码!您可以使用浏览器工具(网络选项卡)检查响应,该响应将提供错误的详细信息。

标签: c# asp.net ajax asp.net-mvc tsql


【解决方案1】:

您应该使用您的ajax 调用中的url,如下所示。

url: '@Url.Action("DeletePartner")'

【讨论】:

    【解决方案2】:

    您必须以

    的格式提供 ajax url
    url : '../controllerName/ActionName'
    
    
     [HttpPost]
    public ActionResult DeletePartner ( int pid )
    {
        return Json(new { DeletedSuccessfully = this._Db.DeletePartner(pid) });
    }
    

    控制器无法识别DeletedSuccessfully 变量。所以可能会导致500错误

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2020-10-16
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多