【问题标题】:jquery , razor view, and sql databasejquery、razor 视图和 sql 数据库
【发布时间】:2012-12-07 11:24:52
【问题描述】:

我是 asp.net 和 razor 的新手。我正在尝试让名为 product 的字段自动完成来自数据库的结果。

我已经创建了 autocomplete.cs 模型,并且工单控制器已经在项目中,所以我只是添加了操作。然后 new.cshtml 我已经添加了代码。我不知道出了什么问题。任何帮助表示赞赏。

问题是当我转到 new.cshtml 页面并且 jquery 不起作用并且文本框什么都不做时。它搞砸了我使用 jquery 隐藏的隐藏字段。它出现了。

这是自动完成的.cs

using System;
using System.Web;
using System.Linq;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Configuration;

namespace HelpDesk.Models
{
public class PartNumber
{
    public string[] GetPartNumber()
    {
        List<string> partnumber = new List<string>();
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["RASConnectionString"].ConnectionString))
        {
            con.Open();
            SqlCommand comm = new SqlCommand("select * from pltjones.dbo.inv_master", con);
            SqlDataReader reader = comm.ExecuteReader();

            while (reader.Read())
            {
                partnumber.Add(reader["part_no"].ToString());
            }
        }
        return partnumber.ToArray();
    }
}

那么这里是已经在这个应用程序中创建的票控制器。我正在做一些我添加的内容。

  public ActionResult Autocomplete(string term)
    {
        var items = new PartNumber().GetPartNumber();

        var filteredItems = items.Where(
            item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0
            );
        return Json(filteredItems, JsonRequestBehavior.AllowGet);
    }

这是 razor 视图 new.cshtml

 <script type="text/javascript">
   $(document).ready(function () {
       $('#product')
    .each(function () {
        $(this).autocomplete({
            source: '@Url.Action("Autocomplete")'
        });
    });
   });

 <tr id="trEmail">
    <td colspan="2">
        <label for="product">Enter product: </label>
        <input type="text" name="product" id="product" />
</tr>

【问题讨论】:

  • 使用 部分中的代码确保 JQuery 已正确加载到您的页面 new.chtml 中。 if (jQuery) { alert("jQuery library is loaded!"); } else { alert("jQuery library is not found!"); }
  • 您似乎包含 jquery 不正确(包含多次)。我试过你的代码,它有效!可以在浏览器控制台显示错误日志吗?
  • 控制台将此显示为错误 TypeError: $(...).autocomplete is not a function [Break On This Error] source: '/Tickets/Autocomplete'
  • 好吧,我认为控制台错误消失了,因为我在代码中添加了这个,因为我发现它没有正确添加但仍然没有任何东西我还能做些什么吗?
  • 好的,我在应用程序上获得了一个公共 IP 地址,并愿意为可以指导我解决问题的人提供资金。

标签: jquery asp.net razor


【解决方案1】:

您还没有说您使用的是什么自动完成功能,但无论如何都无需调用.each(),因为只有一个匹配项,所以只需使用它即可:

$('#product').autocomplete(... etc ...)

而且你还没有提供任何代码来说明当有人选择一个项目时要做什么,例如

$('#product').autocomplete({
    source: // as above
    select: function (event, ui) {
        $("#product").val(ui.item.value);
    }
});

【讨论】:

  • 我认为它会从公共操作结果自动完成中提取,然后使用该方法从数据库中获取。添加上面的代码更正了其他下拉列表的 jquery 问题,但仍然不起作用
  • 文本框只需要显示数据库中的零件编号,然后我有一个提交它的表单。如果这是一个 aspx 页面,我可以很容易地做到这一点,但由于它是剃须刀,我必须找到另一个选项来获得与 ajax 工具包扩展器相同的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2018-01-26
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 2010-09-30
  • 2019-05-14
相关资源
最近更新 更多