【问题标题】:Ajax cascading dropdownlist is not working for webservices methodsAjax 级联下拉列表不适用于 Web 服务方法
【发布时间】:2015-05-22 12:49:18
【问题描述】:

需要从另一个下拉值绑定下拉值,网络方法不需要 即使在添加了网络参考后也会触发,没有显示任何错误。

我收到错误 *method 500。

我正在使用 Visual Studio,我将 asp.net 应用程序作为一个项目,将 Web 服务作为另一个项目。我在我的 asp.net 应用程序中使用 Web 服务。

我的 Web 服务代码存在某种问题。但我无法从 asp.net 应用程序连续调试到 Web 服务。

我在应用程序和 Web 服务中都设置了断点,但在 Web 服务中没有激活断点,它显示连接错误。

在 localhost 上托管时如何执行此操作?

my country.aspx 代码

<form id="form1" runat="server">
    <ajax:ToolkitScriptManager EnablePageMethods="true" ID="tsmcascading" runat="server">
    </ajax:ToolkitScriptManager>
    <div>
        <div>
            <asp:DropDownList ID="ddlstate" runat="server" AutoPostBack="true">
            </asp:DropDownList>
            <ajax:CascadingDropDown ID="cddstate" runat="server" ServicePath="~/cascadingdropdown.asmx"
                Category="stateid" ServiceMethod="addstate" TargetControlID="ddlstate" PromptText="select state"
                LoadingText="Loading...">
            </ajax:CascadingDropDown>
        </div>
    </div>
    <div>
        <div>
            <asp:DropDownList ID="ddlcity" runat="server">
            </asp:DropDownList>
            <ajax:CascadingDropDown ID="CascadingDropDown1" runat="server" TargetControlID="ddlcity"
                Category="stateid" ParentControlID="ddlstate" ServiceMethod="addcity" PromptText="select city"
                ServicePath="~/cascadingdropdown.asmx" LoadingText="Loading...">
            </ajax:CascadingDropDown>
        </div>
    </div>
</form>

我的网络服务代码 (.asmx)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using AjaxControlToolkit;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Specialized;

/// <summary>
/// Summary description for cascadingdropdown
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService()]

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class cascadingdropdown : System.Web.Services.WebService
{

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["addcontact"].ToString());
    public cascadingdropdown()
    {

        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
    [WebMethod]
    public CascadingDropDownNameValue[] addstate(string state, string city)
    {
        con.Open();
        SqlCommand cmdstate = new SqlCommand("select stateid,statename from tblStates", con);
        cmdstate.ExecuteNonQuery();
        SqlDataAdapter dastate = new SqlDataAdapter(cmdstate);
        DataSet dsstate = new DataSet();
        dastate.Fill(dsstate);
        con.Close();
        List<CascadingDropDownNameValue> statesnames = new List<CascadingDropDownNameValue>();
        foreach (DataRow dtrow in dsstate.Tables[0].Rows)
        {
            string stateid = dtrow["stateid"].ToString();
            string statename = dtrow["statename"].ToString();
            statesnames.Add(new CascadingDropDownNameValue(statename, stateid));
        }
        return statesnames.ToArray();

    }

    [WebMethod]
    public CascadingDropDownNameValue[] addcity(string state, string city)
    {
        int stateid;
        StringDictionary statedetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(state);
        stateid = Convert.ToInt32(statedetails["state"]);
        con.Open();
        SqlCommand cmdcity = new SqlCommand("select cityid,stateid,cityname from tblcities where stateid=@stateid", con);
        cmdcity.Parameters.AddWithValue("@stateid", stateid);
        cmdcity.ExecuteNonQuery();
        SqlDataAdapter dacity = new SqlDataAdapter(cmdcity);
        DataSet dscity = new DataSet();
        dacity.Fill(dscity);
        con.Close();
        List<CascadingDropDownNameValue> citynames = new List<CascadingDropDownNameValue>();
        foreach (DataRow dtrow in dscity.Tables[0].Rows)
        {
            string cityid = dtrow["cityid"].ToString();
            string cityname = dtrow["cityname"].ToString();
            citynames.Add(new CascadingDropDownNameValue(cityid, cityname));
        }
        return citynames.ToArray();
    }

}`

【问题讨论】:

    标签: asp.net web-services c#-4.0 ajaxcontroltoolkit


    【解决方案1】:

    尝试使用 AjaxControltoolkit 级联下拉菜单使用的函数的标准定义:

    public CascadingDropDownNameValue[] addState(String knownCategoryValues, String category, String contextKey)
    {
    ...
    }
    public CascadingDropDownNameValue[] addCity(String knownCategoryValues, String category, String contextKey)
    {
    ...
    }
    

    上下文键不是必填参数,不需要的可以省略。

    【讨论】:

      【解决方案2】:

      我遇到了完全相同的问题,我找到了一个“教程”,并尝试将它与我自己的代码相匹配,但我无法让它工作我也遇到了方法 500 错误。

      尝试使用 100% 的本网站代码

      http://www.aspdotnet-suresh.com/2011/01/introduction-here-i-will-explain-how-to.html

      它对我有用,我只是一次安装了一些代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-08
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多