Ich baue ein kleines DNN MVC-Modul, wobei ich einen Benutzer brauche, um eine Datei hochzuladen, die serverseitig verarbeitet wird.DNN MVC Modul keine Datei zurückstellen
Wenn das Formular zurückgebucht wird, wird das Ansichtsmodell zurückgebucht, aber die Datei ist nie. Request.Files ist immer 0.
Ich habe es sogar vereinfacht, also war alles, was ich auf dem Modul hatte, eine einfache Dateieingabe und Übergabeschaltfläche, aber das scheiterte auch.
Ich würde es hassen, zurück zu .ascx Kontrollen, um dies zum Laufen zu bringen.
Ich teste dies als nicht registrierter Benutzer, daher gibt es keine Authentifizierungsprüfung in der Steuerung.
Siehe Code unten:
Ansicht
@inherits DotNetNuke.Web.Mvc.Framework.DnnWebViewPage<NM.Modules.FlexEventsCreate.Models.FlexEventViewModel>
@using DotNetNuke.Web.Mvc.Helpers
<input type="file" id="fileUp"/>
<input type="submit" id="btnSubmit" />
-Controller
[DnnHandleError]
public class ItemController : DnnController
{
[HttpPost]
public ActionResult ShowForm(FlexEventViewModel flexEvent)
{
if (ModelState.IsValid)
{
var file = Request.Files;
if (file.Count != 0)
{
//do something
}
//return RedirectToDefaultRoute();
}
return View(flexEvent);
}
}
Das gerenderte DNN HTML sieht wie folgt aus (ich habe es vereinfacht)
<form method="post" action="/Test" id="Form" enctype="multipart/form-data">
<!-- Begin Content areas -->
<div>
<div class="row">
<div class="medium-9 columns">
<div id="dnn_LeftPane">
<div class="DnnModule DnnModule-DnnModule-747">
<a name="747"></a>
<div class="DnnF_Title_h1 SpacingBottom">
<h1><span id="dnn_ctr747_dnnTITLE_titleLabel" class="TitleH1"></span>
</h1>
<div id="dnn_ctr747_ContentPane">
<!-- Start_Module_747 -->
<div id="dnn_ctr747_ModuleContent">
<div id="dnn_ctr747_ShowForm_Prog" class="RadAjax RadAjax_Default" style="display:none;">
<div class="raDiv">
</div>
<div class="raColor raTransp">
</div>
</div>
<div class="RadAjaxPanel" id="dnn_ctr747_dnn_ctr747_ShowForm_UPPanel">
<div id="dnn_ctr747_ShowForm_UP">
<!-- 2013.2.717.40 -->
<div id="mvcContainer-747">
<input type="file" id="fileUp">
<input type="submit" id="btnSubmit">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
Zeigen Sie Ihr Formular-Tag. Verfügt über das erforderliche Attribut 'enctype = multipart/form-data' –
In DNN befindet sich das Formular-Tag am Anfang der Seite. Wenn Sie also ein Modul erstellen, schließen Sie es nicht ein.
Irgendwelche Updates zu dieser Frage? Hat die Antwort für dich funktioniert? – DotNetNuclear