MVC局部视图也不返回数据

时间:2018-06-21 15:04:40

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

我是MVC编程的新手,我正在尝试做我认为简单的操作/请求的事情。

我在视图中有一个html输入文本,并使用Ajax调用控制器以返回带有SQL查询结果的部分视图,该查询带有来自文本输入的where子句,目标是使用信息。

下面有代码:

视图中的AJAX请求调用控制器:

$(function()
{
    $.ajax
    ({
        type: "POST",
        url: '@Url.Action("result","result")',
        data: { Code: result},
        success: function(data) {},
        error: function(){
            alert("error");
        }
    });
});

我在其中收到模型信息的局部视图,但是在局部视图中加载时,它没有变化,没有任何结果:

@model xpto.Models.result

@if (Model != null)
{
    <h1>Title</h1>
    <table>
        <tr>
            <td>

                @Model.Code
            </td>
            <td>

            </td>
        </tr>
    </table>    
}
else
{
<table>
    <tr>
        <td>
            <p>No results</p>
        </td>
    </tr>
</table>
}

控制器:

仅通过HttpPost返回部分视图

[HttpPost]
public ActionResult TableStocks(TableStocks model)
        {
            if (ModelState.IsValid)
            {
                SqlConnection conn = new SqlConnection(ConnStr);
                SqlCommand selectX = new SqlCommand("sqlquery @param"), conn);
                SqlDataReader reader;
                selectX.Parameters.AddWithValue("@param", model.code);


                connection.Open();




                reader = selectX.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                       model.Code = Int32.Parse(reader["code"].ToString());
                    }
                }
                else
                {
                    Console.Write("ERROR");
                }
            }


            return PartialView("result", model);
        }

即使在控制器从输入文本接收到值并从数据库中检索带有信息的模型之后,视图仍然没有结果。

@Html.Partial("result", Model)

谢谢。

1 个答案:

答案 0 :(得分:-1)

我假设您已经验证了局部视图可以正确获取模型。如果是这样,那么剩下的就是修改您的AJAX调用,以这样替换页面上的partial:

$(function()
{
    $.ajax
    ({
        type: "POST",
        url: '@Url.Action("result","result")',
        data: { Code: result},
        success: function(data) {
            $('#myDiv').html(data); //Add this line to set the data into the page
        },
        error: function(){
            alert("error");
        }
    });

});