#asp.net-mvc
#asp.net-mvc
Вопрос:
У меня есть ASP.NET Проект MVC с использованием VB.NET в котором я пытаюсь загрузить файл на сервер. Но когда я пытаюсь получить имя загруженного файла, я получаю сообщение об ошибке, как указано выше.
Во время отладки я проверил значение файла, но его отображаемое значение равно нулю.
Мой класс модели:
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Data.OracleClient
Imports System.ComponentModel.DataAnnotations
Imports Microsoft.AspNetCore.Http
Namespace Controls_MVC.Models
Public Class LeaveApplication
Public Property File As IFormFile
End Class
End Namespace
Это моя разметка представления:
@ModelType SdesWeb.Controls_MVC.Models.LeaveApplication
@Code
ViewBag.Title = ViewBag.Title
End Code
@Section js
<script src="@Session("baseurl")/Scripts/jquery.min.js"></script>
<script src="@Session("baseurl")/Scripts/bootstrap.min.js"></script>
End Section
<script src="@Session("baseurl")/Scripts/jquery-ui.js"></script>
<link href="@Session("baseurl")/Styles/jquery-ui.css" rel="stylesheet" />
<link href="@Session("baseurl")/Styles/jquery.dataTables.min.css" rel="stylesheet" />
<script src="@Session("baseurl")/Scripts/jquery.dataTables.min.js"></script>
<link href="@Session("baseurl")/Styles/prism.css" rel="stylesheet" />
<link href="@Session("baseurl")/Styles/chosen.css" rel="stylesheet" />
<form id="leaveapp" action="@Session("baseurl")/LeaveApplication/Save" method="post" enctype="multipart/form-data">
<div class="row pt-2 pb-0">
<div class="col-md-12">
<button id="btnsave" Class="btn btn-info" type="submit"><i Class="fa fa-save"></i> Save</button>
</div>
<div class="row>
<div class="col-md-1">
<button type="button" id="btnattach" Class="btn btn-info btn-sm"
onclick="document.getElementById('file').click();"><i Class="fa fa- paperclip"></i>
Attach File
</button>
@Html.TextBoxFor(Function(Model) Model.File, New With {Key .[id] = "file", .[accept] = "application/pdf", .[type] = "file", .[style] = "display:none"})
</div>
</div>
</form>
И, наконец, это мой код контроллера:
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Mvc
Imports System.Data.OracleClient
Imports SdesWeb.Controls_MVC.Models
Imports Newtonsoft.Json
Imports Microsoft.AspNetCore.Http
Imports System.IO
Namespace Controllers
Public Class LeaveApplicationController
Inherits Controller
' GET: LeaveApplication
Function Index() As ActionResult
Try
ViewBag.Title = "Leave Application"
Return View()
Catch ex As Exception
Session("SystemError") = ex.Message
Return RedirectToAction("Index", "ErrorHandler")
End Try
End Function
Public Function Save(LeaveApplication As LeaveApplication) As ActionResult
Try
dim filename as string= LeaveApplication.File.FileName
MsgBox(filename)
Return View()
Catch ex As Exception
Session("SystemError") = ex.Message
Return RedirectToAction("Index", "ErrorHandler")
End Try
End Function
End Class
End Namespace
Комментарии:
1. Пожалуйста, кто-нибудь, помогите мне, я застрял здесь на последние 2 дня.
Ответ №1:
Проблема решена. Вместо использования IFormFile я использовал класс HttpPostedFileBase, и теперь я могу получить имя файла, а также загрузить в нужную папку.