Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Ajax和Linq更新数据库_C#_Asp.net_Ajax_Asmx - Fatal编程技术网

C# 使用Ajax和Linq更新数据库

C# 使用Ajax和Linq更新数据库,c#,asp.net,ajax,asmx,C#,Asp.net,Ajax,Asmx,我一直在尝试使用Ajax和Linq进行更新,但Ajax调用从未涉及到代码背后的webmethod。我已经更改了用户类以匹配数据库,并使用户对象具有相同的名称,但仍然无法访问后面的代码。我想知道这是不是最好的方式 头版: <div class="row"> <asp:TextBox ID="txt_name" runat="server" ClientIDMode="Static"/> </div> <div class="row">

我一直在尝试使用Ajax和Linq进行更新,但Ajax调用从未涉及到代码背后的webmethod。我已经更改了用户类以匹配数据库,并使用户对象具有相同的名称,但仍然无法访问后面的代码。我想知道这是不是最好的方式

头版:

<div class="row">
    <asp:TextBox ID="txt_name" runat="server" ClientIDMode="Static"/>
</div>
<div class="row">
     <asp:TextBox ID="txt_pass" runat="server" ClientIDMode="Static"/>
</div>
<div class="row">
     <asp:DropDownList ID="ddl_item" runat="server" ClientIDMode="Static">
            <asp:ListItem Text="item 1" Value="Item1" Selected="True"/>
            <asp:ListItem Text="item 2" Value="Item2" />
            <asp:ListItem Text="item 3" Value="Item3" />
           </asp:DropDownList>
</div>
<div class="row">
    <asp:Button runat="server" ID="btn_submit" ClientIDMode="Static" Text="GO"/>
</div>
上传userajax.aspx.cs

[WebMethod]
    [ScriptMethod]
    public static void SaveUser(WebformTest.Models.User user)
    {
        using (var db = new dbDataContext())
        {
            var insert = new User
            {
                name = user.name,
                pass = user.pass,
                Item = user.Item
            };
            db.Users.InsertOnSubmit(insert);
            db.SubmitChanges();
        }
    }    
用户类文件:

 public class User
{
    public string name { get; set; }
    public string pass { get; set; }
    public string Item { get; set; }
}
我的数据库文件名与我的用户类文件相同


我已经更改了几次,在做了大量的谷歌搜索后,它说要保持你的类文件名与你的js对象文件名相同,我在将要输入数据库的值传递给我的setters时使用了正确的类文件。我想知道如何检查它是否转到代码隐藏的webmethod。我已参考了所有正确的using语句。

您的问题很可能是由以下原因引起的:

url: "~/uploadUserAjax/SaveUser"
jQuery
不知道
~
,只有
ASP.NET
知道

通过使用浏览器附带的
开发人员工具
,您可以很容易地检测到此问题。您可以检查网络和/或控制台选项卡是否存在传输和/或JS错误。这些开发工具在所有现代浏览器(Chrome、FF、IE8+)中都可用,您可以按
F12
打开它们

此外,您应该使用
Visual Studio
的集成
调试工具调试ASP.NET网站本身。这样,您可以测试是否输入了
WebMethod


jQuery
中,您使用的是
$(“#btn_submit”)
,但asp.net会为该按钮生成另一个ID。考虑用普通的HTML替换按钮。或者只使用
$('#')

@Url.Content可以用来翻译你的波浪符号。webmethod永远不会被输入,我有一个断点,我正在逐步通过程序调试,甚至是通过javascript。在jQuery中,你正在使用$('#btn_submit'),但是asp.net为该按钮生成另一个ID。考虑用一个普通的HTML替换按钮。或者只需使用$('y''),我就把文件的名字改成了URL:“/PuxAdvuleAjax。ASPX/SaveAuthor”,它已经工作了。感谢您的帮助,这与URL有关。
url: "~/uploadUserAjax/SaveUser"