gpt4 book ai didi

c# - ASP.NET mvc3 网页无法将文件上传到服务器

转载 作者:行者123 更新时间:2023-11-30 18:00:16 24 4
gpt4 key购买 nike

我试图在我的数据库中存储一个类别对象并上传我可以引用该类别的图像,

类别已完美存储,但由于某种原因无法上传图像。当我调试时,我可以看到我的应用程序从未进入将文件存储在服务器上的方法,因为我的文件是“Null”。

型号:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace SkyLearn.Areas.Categories.Models
{
public class Category
{
public int ID { get; set; }
public string Title { get; set; }
public string Icon { get; set; }
public string Description { get; set; }
}

public class CategoryDBContext : DbContext
{
public DbSet<Category> categories { get; set; }
}
}

Controller :

//
// POST: /Categories/Category/Create
[Authorize(Roles = "administrator")]
[HttpPost]
public ActionResult Create(Category category, HttpPostedFileBase Icon)
{
if (Icon != null && Icon.ContentLength > 0)
{
// extract only the filename
var fileName = Path.GetFileName(Icon.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("../Content/icons/"), fileName);
Icon.SaveAs(path);
category.Icon = fileName;
}

if (ModelState.IsValid)
{
db.categories.Add(category);
db.SaveChanges();
return RedirectToAction("Index");
}

return View(category);
}

查看:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" Inherits="System.Web.Mvc.ViewPage<SkyLearn.Areas.Categories.Models.Category>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Create</h2>

<script src="<%: Url.Content("~/Scripts/jquery.validate.min.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js") %>" type="text/javascript"></script>

<% using (Html.BeginForm()) { %>
<form action="" method="post" enctype="multipart/form-data">
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Category</legend>

<div class="editor-label">
<%: Html.LabelFor(model => model.Title) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.Title) %>
<%: Html.ValidationMessageFor(model => model.Title) %>
</div>

<div class="editor-label">
<%: Html.LabelFor(model => model.Icon) %>
</div>
<div class="editor-field">
<input type="file" name="icon" id="icon"/>
</div>

<div class="editor-label">
<%: Html.LabelFor(model => model.Description) %>
</div>
<div class="editor-field">
<%: Html.EditorFor(model => model.Description) %>
<%: Html.ValidationMessageFor(model => model.Description) %>
</div>

<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</form>
<% } %>

<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>

</asp:Content>

谁能告诉我为什么不进入保存文件id的方法不胜感激。

我试着在 stackoverflow 上查看其他答案,尽管他们中的一些人和我有同样的问题,但他们的解决方案并没有解决我的问题。

我还尝试在我的 config.web 中更改上传大小等。

请帮助我:)

最佳答案

我不知道浏览器会如何处理嵌套表单,但是使用 Html.BeginForm() 然后手动写出表单标签没有意​​义。 Html.BeginForm() 有一个输出 Html 属性的重载:

Html.BeginForm(action, controller, 
FormMethod.Post, new { enctype="multipart/form-data" })

关于c# - ASP.NET mvc3 网页无法将文件上传到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10237810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com