我在C#和asp.net中使用Linq使用方法using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
private GitamarineEntities context = new GitamarineEntities();
protected void Page_Load(object sender, EventArgs e)
{
var ves = context.tblVessels.First(v => v.vID == 15);
txtNav.Text = ves.vNavEqpm;
}
protected void Button1_Click(object sender, EventArgs e)
{
var ves = context.tblVessels.Single(v => v.vID == 15);
ves.vNavEqpm = txtNav.Text.Trim();
context.SaveChanges();
}
}
更新数据字段,但它无法正常工作!我不知道为什么?
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//GitamarineEntities1 contextShow = new GitamarineEntities1();
//var vesShow = contextShow.tblVessels.First(v => v.vID == 15);
//txtNav.Text = vesShow.vNavEqpm;
//contextShow.Dispose();
}
protected void Button1_Click(object sender, EventArgs e)
{
GitamarineEntities1 contextUpdate = new GitamarineEntities1();
var vesUpdate = contextUpdate.tblVessels.First(v => v.vID == 15);
vesUpdate.vNavEqpm = txtNav.Text;
contextUpdate.SaveChanges();
}
}
编辑但仍然没有运气
Page_Load
我已经改变了编码,如上所述,当我注释掉Albums
编码时,它仍然有用!但这样用户无法看到他/她正在改变什么!!!
答案 0 :(得分:2)
您只需查看IsPostBack
中的Page_Load
即可。
试试这个:
if (!IsPostBack)
{
GitamarineEntities1 contextShow = new GitamarineEntities1();
var vesShow = contextShow.tblVessels.First(v => v.vID == 15);
txtNav.Text = vesShow.vNavEqpm;
}
答案 1 :(得分:0)
考虑到你的文本被加载到文本框中,我想linq对数据库没有任何问题。
您的HTML页面上的按钮可能未分配给您的Button_Click
事件处理程序。
您的按钮应如下所示:
<asp:Button ID="button1" runat="server" Text="Button" OnClick="Button1_Click" />
确保它位于<form>
元素中,该元素也具有属性runat="server"
在事件处理程序上设置断点,看它是否被触发。如果没有,那么我们需要更多代码来解决这个问题。
答案 2 :(得分:0)
UpdateModel()正在做什么?尝试将其注释掉,看看vNavEqpm是否从文本框值更新。 另一件需要考虑的事情是,尝试在按钮点击事件中重新初始化上下文并在你使用它时将其处理掉,并不是真的建议保持这样的连接活着,你很可能在PageLoad中锁定检索到的记录