2014-02-26 39 views
1

我正在使用EPiServer CMS 7.5 MVC應用程序。上傳文檔並在XForm內發送

我只能在創建新表單時看到文本框和按鈕。我想要一個鏈接,點擊時上傳文檔。然後,這個文件應該能夠在查看錶單數據時查看,並且這個文件應該和郵件一起附加。

任何幫助?

回答

1

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中。

+0

非常感謝。你能幫我上傳文件嗎,因爲我完全不熟悉episerver。如何在BasePageController中獲取OnActionExecuting文檔,並將存儲引用與表單數據一起傳遞 – user3355119

+1

請注意,文件名必須是XForm.cshtml而不是XForms.cshtml。 –