如何在搜索结果-MVC5的基础上填充文本字段

时间:2015-04-15 13:11:34

标签: jquery asp.net-mvc asp.net-mvc-4

我想在搜索到的客户的基础上在文本字段中加载数据。我正在开发'创建'客户视图,我有搜索字段和客户输入字段。 Ajax函数,它假设将参数传递给动作'LoadCustomerInfo'并在文本框中'发布'json数据

<input type="text" id="custm"/>(sutomer id)
<input type="button" value="search" id="btnSearchCus"/>
@Html.TextBox("CustomerName")
@Html.TextBox("FName")
@Html.TextBox("Phone")
<script type="text/javascript">
    $(document).ready(function () {
        $("#btnSearchCus").click(function () {
            var custm = $('#custm').val();
            $.ajax({
                cashe: 'false',
                type: "POST",
                data: { "custm": custm },
                url: '@Url.Action("LoadCustomerInfo", "Sales")',
                dataType: 'HTML',  // add this line
                "success": function (data) {
                    if (data != null) {
                        var vdata = data;
                        $("#CustomerName").val(vdata[0].Name);
                        $("#FName").val(vdata[0].FatherName);
                        $("#Phone").val(vdata[0].Phone1);
                    }
                }
            });
        });
    });
</script>

创建控制器,虽然它现在与此无关,

public ActionResult Create()
{
    ViewBag.CustomerId = new SelectList(db.Customer, "CustomerId", "Name");
    ViewBag.SMClientBranchId = new SelectList(db.SMClientBranch, "SMClientBranchId", "Name");
    ViewBag.EngineNumber = new SelectList(db.Stock, "EngineNumber", "EngineNumber");
    return View();
}

采取参数“custm”并执行操作的操作是:

public ActionResult LoadCustomerInfo(string custm)
{
    var query = from c in db.Customer
    where c.NIC == custm
    select c;
    return Json(query);
}  

问题是,数据没有加载到文本框中,似乎我做错了什么......请帮助或任何参考将有所帮助...感谢您的时间..

2 个答案:

答案 0 :(得分:2)

您的控制器方法正在返回json,因此您需要将ajax参数更改为

$.ajax({
  ...
  url: '@Url.Action("LoadCustomerInfo", "Sales")',
  dataType: 'json',  // change this
  "success": function (data) {
    ...

此外,您只需要视图中的一个对象,所以不要发送整个集合,只需返回一个对象

public ActionResult LoadCustomerInfo(string custm)
{
  ....
  return Json(query.FirstOrDefault());
}  

答案 1 :(得分:1)

您的数据类型应该是json,而不是html,并且拼写错误cache btw。

$.ajax({
    cache: 'false',
    type: "POST",
    data: { "custm": custm },
    url: '@Url.Action("LoadCustomerInfo", "Sales")',
    dataType: 'json',  // add this line
    "success": function (data) {
        if (data != null) {
            var vdata = data;
            $("#CustomerName").val(vdata[0].Name);
            $("#FName").val(vdata[0].FatherName);
            $("#Phone").val(vdata[0].Phone1);
        }
    }
});