问题描述
因此,在初始加载时,页面加载的所有数据都可以很好地加载...一旦我执行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通话
<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>
视图查看电话
<div id="serialPartial">
@{
@Html.Partial("_PartialViewSerialNumbers",Model.SerialNumbers)
}
</div>
实际局部视图
<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>
在ajax成功之前
[![在此处输入图片描述] [1]] [1]
Ajax成功之后
[![在此处输入图片描述] [2]] [2]
如您所见,JSON正在填充到DIV中,并且实际上并没有进入我的部分结果中。.任何人都可以帮忙。 [1]:https://i.stack.imgur.com/lxP1L.png [2]:https://i.stack.imgur.com/8NLhI.png
解决方法
您的部分视图没有要显示的模型,并且没有 ViewData 您的传递对象,但未在部分视图上收到。
“部分视图也具有布局”可能是其显示标题,因此添加
Layout = null
在页面顶部。
这是您所做的逐步更改
在UpdateSerialNumber操作中
来自
public JsonResult UpdateSerialNumber(string serialNumber)
收件人
public ActionResult UpdateSerialNumber(string serialNumber)
更改发件人的类型
return Json(serialArray);
收件人
return View( "_PartialViewSerialNumbers",serialArray)
删除部分渲染线
@Html.Partial("_PartialViewSerialNumbers",Model.SerialNumbers)
在部分视图顶部添加此行
@model string[]
@{
layout = null;
}
替换自
@foreach (var item in Model.SerialNumbers)
收件人
@foreach (var item in Model)