[httpPost] public ActionResult Create(KNowledgebase KB,httpPostedfileBase file) { var KBfilePath = ""; if (ModelState.IsValID) { if (file.ContentLength > 0) { var filename = Path.Getfilename(KB.KNowledgebaseTitle); var path = Path.Combine(Server.MapPath("~/Resources/Kbarticles"),filename + ".pdf"); KBfilePath = path; file.SaveAs(path); } KB.KNowledgebaselink = KBfilePath; db.KNowledgebases.Add(KB); db.SaveChanges(); return RedirectToAction("Index","Home"); } else { return VIEw(); }
该链接是存储在DB中的文件路径,以C:/
在另一页上,我可以查看记录的内容.当我点击其保存在C:/上的链接时,Chrome表示“无法加载本地资源”.我正在保存到资源文件夹,这是我的ASP.NET应用程序目录的一部分.无论如何?
编辑
该页面从此视图提供:
public ActionResult Suggestions(String Tag){ return VIEw();}
编辑2 – 我把看法改为:
@{string tag = "<td><a href=" + "~/Content/files/" + ">" + item.Title.Replace(" ","") + ".pdf" + "</a>" + "</td>"; } @HTML.Raw(tag)
浏览器地址栏中的请求文件是
http://localhost:62165/IncIDent/~/Content/files/
现在我收到一个http错误404.0未找到错误
解决方法 尝试将文件保存在“内容”文件夹中.您可以创建一个子文件夹Content / files.把文件放在那里然后生成如下链接:< a href =“〜/ Content / files / file1.pdf”> file1< / a>
或者如果要直接下载,请使用下载属性:
< a href =“〜/ Content / files / file1.pdf”download> file1< / a> ;. 大多数Web服务器被配置为拒绝对内容文件夹以外的内容的请求.这可以在配置文件中修改,但是如果您使用内容文件夹更容易(更安全).这是基于我的经验,如果有人认为我错了,请让我知道解决我的答案.我总是很高兴学习新的东西. 编辑1:如何动态构建标签 在视图中,您需要一个字符串变量链接,其中包含要显示的链接的文本和另一个可变路径(可能都从控制器中的db加载).那么您可以手动构建标签:
@{ string tag = "<a href=" + path + ">" + link + "</a>";}@HTML.Raw(tag)
编辑2:处理Url中的空格.
您需要使用HTML.Content来获取正确的相对Url.
@{ string link = item.Title; string path = Url.Content("~/Content/files/") + link.Replace(" ","%20") + ".pdf"; string tag = "<a href=" + path + ">" + link + "</a>";}@HTML.Raw(tag)总结
以上是内存溢出为你收集整理的c# – 上传和查看文件ASP.NET MVC 5全部内容,希望文章能够帮你解决c# – 上传和查看文件ASP.NET MVC 5所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)