Je suis nouveau sur asp.net mvc, mais j'ai fait des recherches approfondies sur ce sujet partout.ViewModel ne lie pas du formulaire POST lorsqu'il est passé dans une méthode en tant que paramètre
J'ai une classe ViewModel nommée PictureViewModel qui est la classe d'une vue EditorTemplate hérite de: <% @ 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>
J'ai aussi des champs de fichiers et tout ce qui est affiché à se
<%@ 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>
et voici le code consacré à gérer le soumettre:
[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();
}
}
L'ajout de préfixes, ni l'utilisation de FormCollection avec UpdateModel n'aident pas. J'apprécierais grandement toute aide! Andrew.
Oh, oui, viewdata est correctement renseigné avec le nom de fichier!
Cela ne fonctionne pas, trop [HttpPost] public ActionResult Créer (FormCollection fc/[Bind (préfixe = "form")] PictureViewModel pm /) { essayer { var p = new PictureViewModel() UpdateModel (p, "form", new [] {"Nom", "Description"}); ViewData ["name"] = Request.Files [0] .FileName; // TODO: Ajouter la logique d'insertion ici return View ("New", p); return RedirectToAction ("Index"); } catch { return(); } }
Et ce code
foreach (var k in fc)
{
Debug.WriteLine(k.ToString());
}
est la production
form.Name
form.Description
CategoryID
Create
ajoutez votre FormCollection et regardez les clés que vous recevez. dedans. – Stefanvds
J'ai essayé, 4 clés existent. – berezovskyi