开源 C# .net mvc 开发(五)常用代码快速开发

文章的目的为了记录.net mvc学习的经历。本职为嵌入式软件开发,公司安排开发文件系统,临时进行学习开发,系统上线3年未出没有大问题。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

相关链接:

开源 C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程-CSDN博客

开源 C# .net mvc 开发(七)动态图片、动态表格和json数据生成-CSDN博客

开源 C# .net mvc 开发(八)IIS Express轻量化Web服务器的配置和使用-CSDN博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

开源 java android app 开发(十三)绘图定义控件、摇杆控件的制作-CSDN博客

在前面4个章节里,完成了浏览器静态页面的显示、网站数据库的增删改查、最终内外网访问的办法,工程结构以及页面的提交和显示。

本章主要介绍常用代码,来开发速度,减少大家查找的时间。具体内容如下:

1.文件的上传和下载。

2.excel的生成下载。

3.ling查询的常用代码。

4.logo日志的使用。

5.Ajax异步访问。

 一、对于网站或者ERP来说,我们经常会用到文件上传和下载。

1)以下为文件上传的代码

.cshtml前端代码

<text>选择上传文件:</text>
    <input name="file" type="file" id="file" />
    <br /><br />
<input type="submit" name="Upload" value="上传"  class="btn-primary" />

对应的.cs控制器代码

public ActionResult File_Debug_Up(MD_File mD_File, FormCollection form)
{
    if (file.ContentLength == 0)
    {

        Session["Err"] = "烧录文件未选择或大小为0,请重新选择!";
        return RedirectToAction("FileNameErrPage", "Home");

    }
    else
    {
        //文件大小不为0
        file = Request.Files[0];
        //保存成自己的文件全路径,newfile就是你上传后保存的文件,
        //服务器上的UpLoadFile文件夹必须有读写权限
        string target = Server.MapPath("~") + ("/MD_File/");//取得目标文						件夹的路径

        string filename = file.FileName;//取得文件名字
        filename.Replace(" ", "");
                string[] ExtArray = filename.Split('.');
        strExt = "." + ExtArray[ExtArray.Length - 1];
                string pathdel = target + "/" + mD_File.FileName;
                file.SaveAs(path + strExt);
    }
}

2)以下为文件下载的代码

前端.cshtml代码

@Html.ActionLink("下载", "Download", new { id = item.Id })

后台.cs代码

public FileResult Download(int? id)
{

    if (Convert.ToString(Session["Right"]) == "销售助理" ||
        Convert.ToString(Session["Right"]) == "烧录厂"
        )
    {
        return null;
    }

    if (Convert.ToString(Session["User"]) != "OK")//(test != null && password == test.Password)
    {
        return null;
    }
    else
    {

        MD_File mD_File = db.MD_File.Find(id);
        string str1 = mD_File.PrjCode;
        str1 += "_" + mD_File.Chip;
        str1 += "_" + mD_File.Mode;
        str1 += "_" + mD_File.Version;

        str1 += mD_File.Remark + ".zip";
        str1 = str1.Replace(" ", "");

        string filePath = Server.MapPath("~/MD_File/" + str1);//路径
        return File(filePath, "application/zip", str1); //welcome.txt是客户端保存的名字
    }

}

二、在系统中经常需要生成excel文件来进行统计。

使用Nuget 安装NPOI

引入命名空间

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

前端.cshtml代码

@Html.ActionLink("出货汇总表(未处理)", "ExportExcel", new { id = 0 })

后端控制器代码

public FileResult ExportExcel(int? id)//出货汇总xls下载
{
    var sbHtml = new StringBuilder();
    sbHtml.Append("<table border='1' cellspacing='0' cellpadding='0'>");
    sbHtml.Append("<tr>");
    var lstTitle = new List<string> { "月份", "下烧录单日期", "产品型号", "订单数量",
        "封装形式", "要求交期", "程序", "CKS(PROM)/CRC(DROM)", "滚动起始码", "滚", "码", "起始", "值", "客户名称"};
    foreach (var item in lstTitle)
    {
        sbHtml.AppendFormat("<td style='font-size: 18px;text-align:center;background-color: #DCE0E2; font-weight:bold;' height='40'>{0}</td>", item);
    }
    sbHtml.Append("</tr>");
    string strTmp = "未读";
    if (id == 1)
    {
        strTmp = "已读";
    }
    var FRecord = from d in db.Flash_Record where d.State == strTmp select d;
    
    foreach(var item in FRecord)
    { 
        sbHtml.Append("<tr>");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", "");
        strTmp = Convert.ToString(item.UpDate).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.Chip).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.ChipNum).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.Package).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.FinishDate).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.Soft).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        strTmp = Convert.ToString(item.CKS).Replace(" ", "") + "/"+ Convert.ToString(item.CRC).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);

        strTmp = Convert.ToString(item.RollStart).Replace(" ", "") ;
        

        int iwTmp = Convert.ToInt32(strTmp, 16);
        string strDec = Convert.ToString(iwTmp);

        string str4, str3, str2, str1;
        str4 = strTmp.Substring(0, 2);
        str3 = strTmp.Substring(2, 2);
        str2 = strTmp.Substring(4, 2);
        str1 = strTmp.Substring(6, 2);
        strTmp = str4 + " " + str3 + " " + str2 + " " + str1;

        str4 = Convert.ToString(Convert.ToInt32(str4, 16));
        str3 = Convert.ToString(Convert.ToInt32(str3, 16));
        str2 = Convert.ToString(Convert.ToInt32(str2, 16));
        str1 = Convert.ToString(Convert.ToInt32(str1, 16));

        string strTmpRollStartEn = Convert.ToString(item.RoolStartEn).Replace(" ", "");
        if (strTmpRollStartEn != "使能")
        {
            strTmp = "";
            str4 = "";
            str3 = "";
            str2 = "";
            str1 = "";
        }
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", str4);
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", str3);
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", str2);
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", str1);
        strTmp = Convert.ToString(item.Customer).Replace(" ", "");
        sbHtml.AppendFormat("<td style='font-size: 18px;height:40px;'>{0}</td>", strTmp);
        sbHtml.Append("</tr>");
    }
    sbHtml.Append("</table>");

    //第一种:使用FileContentResult
    byte[] fileContents = Encoding.Default.GetBytes(sbHtml.ToString());
    string strExcelName = "出货汇总表(未处理).xls";
    if (id == 1)
    {
        strExcelName = "出货汇总表(已处理).xls";
    }
    return File(fileContents, "application/ms-excel", strExcelName);
    /*
    //第二种:使用FileStreamResult
    var fileStream = new MemoryStream(fileContents);
    return File(fileStream, "application/ms-excel", "fileStream.xls");

    //第三种:使用FilePathResult
    //服务器上首先必须要有这个Excel文件,然会通过Server.MapPath获取路径返回.
    var fileName = Server.MapPath("~/Files/fileName.xls");
    return File(fileName, "application/ms-excel", "fileName.xls");
    */
}

三、sql server数据控制使用ling查询语句,下面为常用代码

1、多条件查询:
并且 &&
或者 ||

var list = con.car.Where(r => r.code == "c014" || r.oil == 8.2m);


2、模糊查询
1.模糊
var list = con.car.Where(r => r.name.Contains("AT"));//contains包含
2.开头
var list = con.car.Where(r => r.name.StartsWith("皇冠"));//startswith以什么开头
3.结尾
var list = con.car.Where(r => r.name.EndsWith("版"));//endswith以什么结尾


3、统计查询
1.总个数
//var count = con.car.Count();
2.最大值
//var Max = con.car.Max(r => r.price);
3.最小值
//var Min = con.car.Min(r => r.price);
4.平均值
//var avg = con.car.Average(r => r.price);

4、分页查询
跳过,获取
int count = 5;//一页显示多少条
int pagecount = 1;//第几页

var list = con.car.Skip(pagecount * count).Take(count);//skip:跳过多少条。take:取多少条

5、排序查询
升序
//var list = con.car.OrderBy(r => r.price);
降序
//var list = con.car.OrderByDescending(r => r.price);

去重:
var aaa = con.car.Select(r => r.oil).Distinct();

6、外键显示
return this.brand1.brand_name;//brand1是外键表名,与主键表列重名,自动加一

7、组合查询
var list1 = con.car.AsQueryable();
var list2 = con.car.AsQueryable();
var list3 = con.car.AsQueryable();

if (TextBox1.Text.Trim().Length > 0)
{
list1 = list1.Where(r => r.name.Contains(TextBox1.Text.Trim()));
}
if (TextBox2.Text.Trim().Length > 0)
{
list2 = list2.Where(r => r.brand1.brand_name.Contains(TextBox2.Text.Trim()));
}
if (TextBox3.Text.Trim().Length > 0)
{
list3 = list3.Where(r => r.oil == Convert.ToDecimal(TextBox3.Text.Trim()));
}

var list = list1.Intersect(list2).Intersect(list3);

交集
var list = list1.Intersect(list2).Intersect(list3);

四、系统中经常需要登录操作等日志功能,以下为logo的代码

使用Nuget添加Log4net库

对Web.config配置

使用命名空间

using log4net;
using log4net.Config;

在Global.asax文件中初始化logo

在需要使用的地方记录日志

logger.Info(strLoginName+"登录成功");

五、Ajax:在前面所讲的网站的数据读写中必须整个网页提交或处理,但实际经常需要只读取部分的情况,该情况就是用Ajax异步处理。以下例子进行了数据提交和回读,不进行整个页面的处理。

.cshtml前端代码

<script>

function getCustomPara(strCustom) {
        //alert(1);
        //var varValue = $("#CustomName").combobox("getValue");
        //alert("onselect:" + varValue);
        //alert(strCustom);
        $.ajax({
            url: "/PrjProcesses/GetCustomPara?str=" + strCustom,
            type: "get",
            data: {},
            success: function (res) {
                //alert(res);
                var strTmp = res.split(';');
                document.getElementById("FacCode").value = strTmp[0];
                document.getElementById("PrjNo").value = strTmp[1];
            }, dataType: "text"
        });
    }
</script>

对应的PrjProcesses.cs控制器代码

public string GetCustomPara(string str)
{

    var var_search = db.Custom.Where(r => r.Name.Contains(str)).First();

    str = var_search.FacCode.Replace(" ", "");
    str += ";" + "MX_"+ var_search.C_Abbr.Replace(" ", "");
    str += DateTime.Now.ToString("yyMM"); ;
    string strNum1 = (Convert.ToInt32(Session["PrjCum"])).ToString("D3");
    str += strNum1;
    return str;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值