选择MVC因为为当前主流框架,bootstap为了任何客户端浏览网页都可以自适应
以上两个框架均为本人第一次使用,因此记录下来,希望可以帮助到有同样需求的人
要求如果是PDF文件直接网页打开,如果是别的文件可以下载或者打开
在Models 建立基类
public string Path { get; set; }//路径
public string TitleC { get; set; }//文件夹中文名 public string menu { get; set; }//菜单名 为了显示在台头public List<string> Dict { get; set; } //存放目录
public List<string> Files { get; set; }//存放文件public ActionResult Index(string fn, string titleC,string menu)
{
if (string.IsNullOrEmpty(fn)) fn = Server.MapPath("~/Application Forms (体系文件)/Forms/ISO 受控表格");
if (string.IsNullOrEmpty(titleC)) titleC = "公司ISO受控表单";
if (string.IsNullOrEmpty(menu)) menu = Server.MapPath("~/Application Forms (体系文件)/Forms/ISO 受控表格");
var dict = new List<string>();
var files = new List<string>();
foreach (var obj in subs)
{
if (Directory.Exists(obj))
{
dict.Add(obj); }
else { files.Add(obj); }
var m = new ViewManageIndexViewModel //返回到客户端
{ Dict = dict, Files = files, Path = fn, TitleC = titleC, menu=menu }; return View(m); }
这样可以基本实现指定路径下读取文件和文件夹呈现在客户端
下面为客户端代码以下为bootstrap 的响应式菜单当到手机上会自动自适应效果见下图
<nav class="navbar navbar-inverse" role="navigation">
<div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#"></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li><a href="" >HOME</a></li> <li class="dropdown" style=""> <a href="#" class="dropdown-toggle" data-toggle="dropdown">FORMS <b class="caret"></b></a> <ul class="dropdown-menu" role="menu"> <li>@Html.ActionLink("ISO 受控表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/ISO 受控表格"),menu=Server.MapPath("~/Application Forms (体系文件)/FORMS/ISO 受控表格"), titleC = "公司ISO 受控表单" })</li> <li>@Html.ActionLink("EHS 受控表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/EHS 受控表格"), menu = Server.MapPath("~/Application Forms (体系文件)/FORMS/EHS 受控表格"), titleC = "公司EHS 受控表格" })</li> <li>@Html.ActionLink("其他表格", "Index", new { fn = Server.MapPath("~/Application Forms (体系文件)/FORMS/其他表格"), menu = Server.MapPath("~/Application Forms (体系文件)/FORMS/其他表格"), titleC = "公司其他表格" })</li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">POLICIES <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="#">HR POLICIES</a></li> <li><a href="#">GA POLICIES</a></li> <li><a href="#">IT POLICIES</a></li> </ul> </li> </ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>
文件的呈现才有bootstrap的table class="table table-bordered" 可以在窗口变小的时候自动生成滚动条效果见下图
<table class="table table-bordered">
<thead> <tr> <th>文件名</th> <th>修改时间</th> <th>操作</th> </tr> </thead> <tbody> @foreach (var d in Model.Files) { if ((@File.GetAttributes(d) & FileAttributes.Hidden) != FileAttributes.Hidden) { <tr> <td> @Path.GetFileNameWithoutExtension(d)</td> <td> @String.Format("{0:yyyy-MM-dd}", @File.GetLastWriteTime(d))</td> @* <td> @System.Diagnostics.FileVersionInfo.GetVersionInfo(d).FileVersion </td>*@ @if(@Path.GetExtension(d)==".pdf") { <td> @Html.ActionLink("表单申请流程", "openfile", new { path = Path.Combine(Model.Path, "流程"), fileName = Path.GetFileName(d).Substring(0, 11) + ".pdf" }) @Html.ActionLink("查看文件", "openfile", new { path = Model.Path, fileName = Path.GetFileName(d) })</td> } else { <td> @Html.ActionLink("查看文件/下载文件", "GetFileFromDisk", new { path = Model.Path, fileName = Path.GetFileName(d) })</td> } </tr> } } </tbody> </table>当点击查看文件时调用的方法是
public FilePathResult GetFileFromDisk(string path, string fileName)
{ return File(path + "\\" + fileName, "application/zip-x-compressed", fileName); }这个时候点击以后会下显示器下方显示
我不想出现下载的按钮只想在线打开所以改写如下
Response.ContentType = "Application/pdf";
// string fileName = inFilePath.Substring(inFilePath.LastIndexOf('\\') + 1); Response.AddHeader("content-disposition", "filename=" + filename); Response.WriteFile(path + "\\" + filename); Response.End();以上基本完成所要功能