一、DAL数据访问层代码
1、获取实体对象
/// <summary>
/// 得到一个对象实体
/// </summary>
public Model.Banqi GetModel(int id)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select top 1 * from banqi");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.Int,4)};
parameters[0].Value = id;
Model.Banqi model = new Model.Banqi();
DataTable dt = new SqlHelper().ExecuteQuery(strSql.ToString(), parameters, CommandType.Text);
if (dt.Rows.Count > 0)
{
if (dt.Rows[0]["id"].ToString() != "") //这个判断可以省略,只判断允许为空的字段
{
model.id = int.Parse(dt.Rows[0]["id"].ToString());
}
model.bqid = dt.Rows[0]["bqid"].ToString();
model.xxdw = dt.Rows[0]["xxdw"].ToString();
model.bqmc = dt.Rows[0]["bqmc"].ToString();
model.zygz = dt.Rows[0]["zygz"].ToString();
model.pxdd = dt.Rows[0]["pxdd"].ToString();
model.skjs = dt.Rows[0]["skjs"].ToString();
model.pxks = DateTime.Parse(dt.Rows[0]["pxks"].ToString());
model.pxjs = DateTime.Parse(dt.Rows[0]["pxjs"].ToString());
model.bqrs = int.Parse(dt.Rows[0]["bqrs"].ToString());
return model;
}
else
{
return null;
}
}
2、更新数据
//更新一条记录
public bool Update(Model.Banqi model) {
StringBuilder strSql = new StringBuilder();
strSql.Append("update banqi set ");
strSql.Append("bqid=@bqid,");
strSql.Append("xxdw=@xxdw,");
strSql.Append("bqmc=@bqmc,");
strSql.Append("zygz=@zygz,");
strSql.Append("pxdd=@pxdd,");
strSql.Append("skjs=@skjs,");
strSql.Append("pxks=@pxks,");
strSql.Append("pxjs=@pxjs,");
strSql.Append("update_time=@update_time");
strSql.Append(" where id=@id");
SqlParameter[] parameters = {
new SqlParameter("@bqid", SqlDbType.NVarChar,50),
new SqlParameter("@xxdw", SqlDbType.NVarChar,50),
new SqlParameter("@bqmc", SqlDbType.NVarChar,50),
new SqlParameter("@zygz", SqlDbType.NVarChar,50),
new SqlParameter("@pxdd", SqlDbType.NVarChar,50),
new SqlParameter("@skjs", SqlDbType.NVarChar,50),
new SqlParameter("@pxks", SqlDbType.DateTime),
new SqlParameter("@pxjs", SqlDbType.DateTime),
new SqlParameter("@bqrs", SqlDbType.TinyInt),
new SqlParameter("@update_time", SqlDbType.DateTime),
new SqlParameter("@id", SqlDbType.Int,4)
};
parameters[0].Value = model.bqid;
parameters[1].Value = model.xxdw;
parameters[2].Value = model.bqmc;
parameters[3].Value = model.zygz;
parameters[4].Value = model.pxdd;
parameters[5].Value = model.skjs;
parameters[6].Value = model.pxks;
parameters[7].Value = model.pxjs;
parameters[8].Value = model.bqrs;
parameters[9].Value = model.update_time;
parameters[10].Value = model.id;
int res = new SqlHelper().ExecuteNonQuery(strSql.ToString(), parameters, CommandType.Text);
if (res>=1) //更新一条就是=1
{
return true;
}
else
{
return false;
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="banqi_edit.aspx.cs" Inherits="Peixun.Web.banqi_edit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>班期修改</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,user-scalable=yes, minimum-scale=0.4, initial-scale=0.8,target-densitydpi=low-dpi" />
<link rel="stylesheet" href="./css/font.css">
<link rel="stylesheet" href="./css/xadmin.css" />
<script src="./lib/layui/layui.js" charset="utf-8"></script>
<script type="text/javascript" src="./js/xadmin.js"></script>
</head>
<body>
<div class="layui-fluid">
<div class="layui-row">
<form id="form" class="layui-form" runat="server">
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期ID
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtBqid" lay-verify="title" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入班期ID
</div>
</div>
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>学校单位
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtXxdw" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入培训机构院校
</div>
</div>
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期名称
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtBqmc" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入班期名称
</div>
</div>
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>职业工种
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtZygz" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入职业工种
</div>
</div>
<!--项目结束-->
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培训地点
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtPxdd" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入培训地点
</div>
</div>
<!--项目结束-->
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>授课教师
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtSkjs" lay-verify="required" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入授课教师
</div>
</div>
<!--项目结束-->
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培训开始
</label>
<div class="layui-input-inline layui-show-xs-block">
<asp:TextBox ID="txtPxks" runat="server" placeholder="培训开始日期" lay-verify="date"
autocomplete="off" CssClass="layui-input"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入培训开始日期
</div>
</div>
<!--项目结束-->
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>培训结束
</label>
<div class="layui-input-inline">
<asp:TextBox ID="txtPxjs" autocomplete="off" class="layui-input" lay-verify="date"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入培训结束日期
</div>
</div>
<!--项目结束-->
<!--项目开始-->
<div class="layui-form-item">
<label for="username" class="layui-form-label">
<span class="x-red">*</span>班期人数
</label>
<div class="layui-input-inline ">
<asp:TextBox ID="txtPxrs" lay-verify="number|Ndouble" autocomplete="off" class="layui-input"
runat="server"></asp:TextBox>
</div>
<div class="layui-form-mid layui-word-aux">
<span class="x-red">*</span>请输入培训人数
</div>
</div>
<!--项目结束-->
<!--按钮开始-->
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<asp:Button ID="Button1" runat="server" lay-submit="" lay-filter="add" Text="保存"
CssClass="layui-btn" OnClick="Button1_Click" />
</div>
<!--按钮结束-->
</form>
</div>
</div>
<script> layui.use(['laydate', 'form'],
function () {
var laydate = layui.laydate;
var form = layui.form
//自定义验证规则
form.verify({
title: function (value, item) {
if (value.length < 5) {
return '标题至少得5个字符啊';
}
}
, Ndouble: [
/^[1-9]\d*$/
, '只能输入整数哦'
]
, contact: function (value) {
if (value.length < 4) {
return '内容请输入至少4个字符';
}
}
, phone: [/^1[3|4|5|7|8]\d{9}$/, '手机必须11位,只能是数字!']
, email: [/^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/, '邮箱格式不对']
});
//监听提交
form.on('submit(add)', function (data) {
//ajax
//console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
//console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value};获取单个值data.field["title"]
//sreturn false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
//执行一个laydate实例
laydate.render({
elem: '#txtPxks', //指定元素
btns: ['confirm'],
theme: 'grid',
trigger: 'click' //解决日期选择一闪而过问题
});
//执行一个laydate实例
laydate.render({
elem: '#txtPxjs', //指定元素
trigger: 'click' //解决日期选择一闪而过问题
});
});
</script>
</body>
</html>
1、根据传来的参数id,获取实体对象,将值赋予前台控件文本属性。
2、通过前台JS验证,修改数据后保存。更新成功后,关闭弹出页,刷新父窗口。
1.1 输入关键字,通过百度搜索来自指定网站的网页,如凤凰网。
1.2 下拉菜单和输入框组合到一起,即网站地址既可以手动输入,也可以通过下拉菜单选择后自动输入。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script language="javascript" type="text/javascript">
function baiduSearch() {
window.open("http://www.baidu.com/baidu?word=" + formmain.kw.value + "&tn=bds&cl=3&ct=2097152&si=" + formmain.sitesearch.value + "&s=on");
//如果用汉语搜索,关键字最好是重新编码:encodeToGb2312(formmain.kw.value)
}
</script>
<style>
.siteselect{
width:168px;
margin-left:-145px;
margin-left:-146px;
}
.iesitesearch{
font-size:14px;
height:16px;
width:145px;
margin-top:0px;
position:absolute;
left:5px;
}
</style>
<title>站内搜索</title>
</head>
<body>
<form id=formmain onsubmit="return checktype(this); search()" name="f" action=JavaScript:>
关键字:<input type="text" size=35 name="wd" id="kw" maxlength="100" title="输入”搜索词“,在下面区域单击某一按钮,即开始搜索!" /> 网站地址:
<span style="position:relative;">
<span style="margin-left:150px;overflow:hidden;">
<select class="siteselect" onchange="this.parentNode.nextSibling.value=this.value">
<option value="sohu.com">搜狐</option>
<option value="sina.com.cn">新浪</option>
<option value="163.com">网易</option>
<option value="qq.com">腾讯</option>
<option value="ifeng.com">凤凰网</option>
</select>
</span><input id="sitesearch" name="sitesearch" class="iesitesearch" title="在前面输入框中输入“搜索词“后,在此处可输入网址(如sina.com.cn,前面不需要http://www.)或选择某一特定网站,然后单击“谷歌”或“百度”即可开始定向搜索!";>
<!--</span><input...的内容必须写成一行,否则下拉菜单中选择的内容无法显示到输入框-->
</span>
<input name="btnG3" type="button" value="百度" onclick="baiduSearch();" class="sitebai" />
</form>
</body>
</html>
搜索后的显示页面:
[dependencies]
tokio = { version = "1", features = ["full"] }
lettre = { version = "0.10.4", default-features = false, features = ["smtp-transport", "tokio1-rustls-tls", "hostname", "builder"] }
rusoto_core = { version = "0.48", default-features = false, features = ["rustls"] }
rusoto_ses = { version = "0.48", default-features = false, features = ["rustls"] }
base64 = "0.21"
serde = "1.0"
anyhow = "1.0"
tera = { version = "1", default-features = false }
rc\main.rs
use anyhow::Error;
use lettre::{
transport::smtp::authentication::Credentials, AsyncSmtpTransport, Message, Tokio1Executor,
};
use rusoto_ses::SesClient;
mod ses;
mod smtp;
mod template;
#[tokio::main]
async fn main() -> Result<(), Error> {
// email data
let from = "evil@hacker.com".to_string();
let to = "credule@kerkour.com".to_string();
let subject = "".to_string();
let title = subject.clone();
let content = "".to_string();
// template things
let mut templates = tera::Tera::default();
// don't escape input as it's provided by us
templates.autoescape_on(Vec::new());
templates.add_raw_template("email", template::EMAIL_TEMPLATE)?;
let email_data = tera::Context::from_serialize(template::EmailData { title, content })?;
let html = templates.render("email", &email_data)?;
let email = Message::builder()
.from(from.parse()?)
.to(to.parse()?)
.subject(subject)
.body(html.to_string())?;
// Using SMTP
let smtp_credentials =
Credentials::new("smtp_username".to_string(), "smtp_password".to_string());
let mailer = AsyncSmtpTransport::<Tokio1Executor>::relay("smtp.email.com")?
.credentials(smtp_credentials)
.build();
smtp::send_email(&mailer, email.clone()).await?;
// or using SES
// load credentials from env
let ses_client = SesClient::new(rusoto_core::Region::UsEast1);
ses::send_email(&ses_client, email).await?;
Ok(())
}
src\ses.rs
use lettre::Message;
use rusoto_ses::{RawMessage, SendRawEmailRequest, Ses, SesClient};
use base64::{Engine as _, engine:: general_purpose};
pub async fn send_email(ses_client: &SesClient, email: Message) -> Result<(), anyhow::Error> {
let raw_email = email.formatted();
let ses_request = SendRawEmailRequest {
raw_message: RawMessage {
//data: base64::encode(raw_email).into(),
data: general_purpose::STANDARD.encode(raw_email).into(),
},
..Default::default()
};
ses_client.send_raw_email(ses_request).await?;
Ok(())
}
src\smtp.rs
use lettre::{AsyncSmtpTransport, AsyncTransport, Message, Tokio1Executor};
pub async fn send_email(
mailer: &AsyncSmtpTransport<Tokio1Executor>,
email: Message,
) -> Result<(), anyhow::Error> {
mailer.send(email).await?;
Ok(())
}
src\template.rs
*请认真填写需求信息,我们会在24小时内与您取得联系。