这几天在使用uniapp编写一些前端登录窗体验证,后端WebApi使用.Net,本来可以使用string字符串的形式,传递参数,但考虑到后期开发,可能会有在移动端做一些Form表单数据录入及提交,比方说:下订单等信息,考虑到数据文本框可能比较多,哪么如果是这样的话,是否有一种更快捷的方式提交数据,对比了一下,决定使用Data:{"username":"用户","password":"密码"} 使用Body数据结构,用类方法封装实体类,可能会好了一些,想到以后要反复重用代码,哪就先这样干吧!废话少说上代码:
1、前端:uniapp前端有两个文本框,分别是用户框,密码框,点提交后请求代码如下:
uni.request({
url: serverUrl + '//api/registLogin/Post', //请求的服务器地址
data: {
"username": username,
"password": password
},
method: "POST",
success: (res) => {
if(res.statusCode==200)//请求如果200成功,否则失败
{
var data= res.data;
// 获得数据后,就可以作一些判断,实现使用tab切换的api页面。
uni.switchTab({
url: "/pages/msg/more"
});
}
2、后端数据接收方法
public Object Post([FromBody] Data value) //用FromBody结构体接收
{
var MyData= value;
string code = MyData.username;//获取传递参数值
string pwd = MyData.password;//获取传递参数值
//这里查询,生产环境当然最好,要加入防sql注入编写习惯,这里是就不重述了
string strSql = "Select username',password From 用户登录表 Where OperatorCode='" + code + "' And Pwd='"+ pwd + "'";
DataTable dt = new DataTable();
dt = SqlClass.GetTable(strSql, "dt");
if (dt.Rows.Count > 0)
{
List userList = TableToEntity(dt); // 调用:
return userList;//增加实体类对象
}
else
{
return null;
}
}
3、实体类方法
public class Data
{
public string username{get;set;}
public string password{get;set;}
//这里是针对用户登录表,有两列,实际开发中,如果你登录用户表有多列,你就一列写一个 实 体,这个看你自己个人设计爱好了。
}
4、//把Datatable数据集,转换为实体类对象的方法
private static List TableToEntity(DataTable dt) where T : class, new()
{
Type type = typeof(T);
List list = new List();
foreach (DataRow row in dt.Rows)
{
PropertyInfo[] pArray = type.GetProperties();
T entity = new T();
foreach (PropertyInfo p in pArray)
{
if (row[p.Name] is Int64)
{
p.SetValue(entity, Convert.ToInt32(row[p.Name]), null);
continue;
}
p.SetValue(entity, row[p.Name], null);
}
list.Add(entity);
}
return list;
}