简体   繁体   English

ajax调用成功后部分视图无法正确呈现

[英]Partial View not rendering properly after ajax call success

So on initial load the page loads fine with all data populated... Once i do my ajax call and bring the data back.. Instead of populating my partial view.. Its just populating the json to the div...因此,在初始加载时,页面加载良好,所有数据都已填充...一旦我执行我的 ajax 调用并将数据带回来...而不是填充我的部分视图...它只是将 json 填充到 div...

public JsonResult UpdateSerialNumber(string serialNumber)
        {

            string connectionstring = configuration.GetConnectionString("DataBase");
            using (SqlConnection connection = new SqlConnection(connectionstring))

            {
                string query = "Insert Into SerialNumbers (SerialNumber)" +
            "Values('" + serialNumber + "')";

                SqlCommand command = new SqlCommand(query, connection);
                connection.Open();
                command.ExecuteNonQuery();
             }

            SqlConnection con = new SqlConnection(connectionstring);
            string sql = "select * from SerialNumbers";
            con.Open();
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.CommandType = CommandType.Text;
            DataTable dt = new DataTable();
            SqlDataAdapter ad = new SqlDataAdapter();
            ad.SelectCommand = cmd;
            ad.Fill(dt);
            con.Close();
            SerialNumbers sNum = new SerialNumbers();
            string[] serialArray = dt.Rows.OfType<DataRow>().Select(k => k[1].ToString()).ToArray();

            List<SerialNumbers> serial = serialArray.Select(s => new SerialNumbers { SerialNumber = s }).ToList();

            SingleStageTerminal term = new SingleStageTerminal();
            term.SerialNumbers = serial;
            JavaScriptSerializer js = new JavaScriptSerializer();
            //serialArray = js.Serialize(term.SerialNumbers);
            return Json(serialArray);
     

AJAX CALL AJAX 调用

<script>
    
   
     self.url = '@Url.Action("UpdateSerialNumber")'
    $(document).ready(function () {
        // Get value on button click and show alert
        $("#associate").click(function () {
            var str = $("#SerialTb").val();
        
            $.ajax(self.url,
                {
                    type: "POST",
                    dataType: 'html',
                    data: ({ SerialNumber: str }),
                    async: true,
                    success: function (data) {
                     $("#serialPartial").html(data);
                 }
            })
        });
    });
  

</script>

PARTIAL VIEW CALL部分视图调用

<div id="serialPartial">
                                @{
                                    @Html.Partial("_PartialViewSerialNumbers", Model.SerialNumbers)
                                }

                            </div>

ACTUAL PARTIAL VIEW实际局部视图

<div class="card w-100">
    <h5 class="card-header"><b>Serial Numbers</b></h5>
    <div class="card-body">
        <div class="container">
            <div class="card card-block user-card">
                <ul id="SerialNumbersTest" class="scroll-list cards">
                    @if (ViewBag.Serials == null)
                    {
                        @foreach (var item in Model.SerialNumbers)
                        {
                            <li>
                                <h6 style="text-align:center">@item</h6>
                            </li>
                        }
                    }
                    else
                    {
                        @foreach (var item in ViewBag.Serials)
                        {
                            <li>
                                <h6 style="text-align:center">@item</h6>
                            </li>
                        }
                    }
                </ul>
            </div>
        </div>
    </div>
</div>

before ajax success在ajax成功之前

[![enter image description here][1]][1] [![在此处输入图像描述][1]][1]

AFTER ajax sucess ajax成功后

[![enter image description here][2]][2] [![在此处输入图像描述][2]][2]

As you can see, the JSON is being populated into the DIV and its not actually going into my partial result.. can anyone help.正如您所看到的,JSON 被填充到 DIV 中,它实际上并没有进入我的部分结果......任何人都可以提供帮助。 [1]: https://i.stack.imgur.com/lxP1L.png [2]: https://i.stack.imgur.com/8NLhI.png [1]: https : //i.stack.imgur.com/lxP1L.png [2]: https : //i.stack.imgur.com/8NLhI.png

Your Partial View Not Have any Model To Display and Don't have ViewData Your Pass Object But not Received on Partial View.您的部分视图没有任何模型可显示,也没有您的传递对象的ViewData,但未在部分视图上收到。

Also Partial View Have Your Layout may be its shows header so Add部分视图也有你的布局可能是它的显示标题所以添加

Layout = null布局 = 空

on top of page.在页面顶部。

Here is your changes Step by Step这是您的更改步骤

in UpdateSerialNumber Action在 UpdateSerialNumber 操作中

From

 public JsonResult UpdateSerialNumber(string serialNumber)

To

 public ActionResult UpdateSerialNumber(string serialNumber)

Change Return Type From更改返回类型自

 return Json(serialArray);

To

 return View( "_PartialViewSerialNumbers" ,serialArray)

Remove This Line Render Partial删除这条线渲染部分

@Html.Partial("_PartialViewSerialNumbers", Model.SerialNumbers)

Add This line On top of Partial View在局部视图顶部添加这一行

@model string[]
@{ 
   layout = null;
}

Replace From替换自

@foreach (var item in Model.SerialNumbers)

To

@foreach (var item in Model)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM