Я новичок в asp.net mvc, но я всюду тщательно искал эту тему.
У меня есть класс ViewModel с именем PictureViewModel, который является классом, от которого наследуется представление EditorTemplate:
<% @ Control Language = "C #" Inherits = "System.Web.Mvc.ViewUserControl"%>
<div class="editor-label"><%: Html.LabelFor(m=>m.Name) %></div>
<div class="editor-field"><%: Html.TextBox("form.Name") %></div>
<div class="editor-label"><%: Html.LabelFor(m=>m.Description) %></div>
<div class="editor-field"><%: Html.TextArea("form.Description") %></div>
<% Html.RenderAction("SelectCategory", "Category"); %>
<div class="editor-label"><label for="thumbFile">Thumb</label></div>
<div class="editor-field"><input id="thumbFile" name="thumbFile" type="file"/></div>
<div class="editor-label"><label for="fullFile">Full</label></div>
<div class="editor-field"><input id="fullFile" name="fullFile" type="file"/></div>
Также у меня есть поля файла и все, что выложено на себя
<%@ Page Title="" Language="C#" MasterPageFile="/Views/Shared/Site_Table.Master"
Inherits="System.Web.Mvc.ViewPage<MvcApplicationVelarPolya.Areas.Admin.Models.PictureViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%
using (Html.BeginForm("create", "Pictures", FormMethod.Post, new {enctype="multipart/form-data"}))
{%>
<%: Html.EditorForModel() %>
<input type="submit" name="Create" />
<% }%>
</asp:Content>
А вот код, предназначенный для обработки отправки:
[HttpPost]
public ActionResult Create([Bind(Prefix="form")] PictureViewModel pm)
{
try
{
var p = new PictureViewModel();
UpdateModel(p, "",new[] {"Name", "Description"});
ViewData["name"] = Request.Files[0].FileName;
return View("New", p);
}
catch
{
return View();
}
}
Ни добавление префиксов, ни использование FormCollection с UpdateModel не помогают.
Буду очень признателен за любую помощь!
Эндрю.
О, да, данные представления правильно заполнены именем файла!
Это тоже не работает
[HttpPost]
public ActionResult Create (FormCollection fc / [Bind (Prefix = "form")] PictureViewModel pm /)
{
пытаться
{
var p = new PictureViewModel ();
UpdateModel (p, "form", new [] {"Name", "Description"});
ViewData ["name"] = Request.Files [0] .FileName;
// TODO: добавить логику вставки здесь
возврат View («Новый», р);
return RedirectToAction («Индекс»);
}
ловить
{
возврат View ();
}
}
И этот код
foreach (var k in fc)
{
Debug.WriteLine(k.ToString());
}
производит
form.Name
form.Description
CategoryID
Create