我正在使用EPiServer CMS 7.5 MVC應用程序。上傳文檔並在XForm內發送
我只能在創建新表單時看到文本框和按鈕。我想要一個鏈接,點擊時上傳文檔。然後,這個文件應該能夠在查看錶單數據時查看,並且這個文件應該和郵件一起附加。
任何幫助?
我正在使用EPiServer CMS 7.5 MVC應用程序。上傳文檔並在XForm內發送
我只能在創建新表單時看到文本框和按鈕。我想要一個鏈接,點擊時上傳文檔。然後,這個文件應該能夠在查看錶單數據時查看,並且這個文件應該和郵件一起附加。
任何幫助?
XForm編輯器中沒有文件上傳控件。一個選項 - 修改XForm的呈現方式。 EPiServer中的XForm使用顯示模板進行渲染。如何添加文件上傳的一種方式是創建您自己的XForm顯示模板並添加文件上傳。顯示模板將用於您的應用程序中的所有XForms。
要創建顯示模板,請在Visual Studio中的/ Views/Shared/DisplayTemplates /下創建XForm.cshtml。以下是XForm.cshtml的源代碼示例:
@using EPiServer.HtmlParsing
@using EPiServer.Web.Mvc.Html
@model EPiServer.XForms.XForm
@if (ViewData["XFormActionResult"] is EPiServer.Web.Mvc.XForms.XFormSuccessActionResult)
{
<strong>Form posted.</strong>
}
else
{
using (Html.BeginXForm(Model, new { @class = "form xform" }))
{
if (Model != null)
{
foreach (HtmlFragment fragment in (IEnumerable<HtmlFragment>)ViewData["XFormFragments"] ?? Model.CreateHtmlFragments())
{
// here can override particular fragment
// for example, check if TextBox Css class is "file-upload"
// then replace it with file upload
@Html.Fragment(fragment)
}
}
}
}
之後,您必須自己處理髮布表單。本文描述如何做到這一點:http://www.eyecatch.no/blog/2013/01/using-xforms-and-mvc-in-an-episerver-7-block/
然後OnActionExecuting在BasePageController中,您可以處理文件上傳。您可以將它存儲在Blob中(在EPi 7 VPP中)並將參考(GUID)存儲在XForm中。
非常感謝。你能幫我上傳文件嗎,因爲我完全不熟悉episerver。如何在BasePageController中獲取OnActionExecuting文檔,並將存儲引用與表單數據一起傳遞 – user3355119
請注意,文件名必須是XForm.cshtml而不是XForms.cshtml。 –