2015-04-17 38 views
0

我需要在singleChoiceAction_executed事件觸發下載文件。這裏是我的代碼:如何使SingleChoiceAction_execute同步?

private void templatePickAction_Execute(object sender, SingleChoiceActionExecuteEventArgs e) 
{ 
    Stream Stream = new MemoryStream(); 
    var item = View.ObjectSpace.GetObjects<xDicExcelTemplates>().Where(f => f.Name == templatePickAction.SelectedItem.Caption).FirstOrDefault(); 
    if (item != null) 
     item.FileTemplate.SaveToStream(Stream); 
     Stream.Position = 0; 
     ResponseWriter.WriteFileToResponse(Stream, "1.xlsx"); 
} 

但它在異步執行時不起作用。

如何使動作同步執行? OMG。

+0

1)不知道這只是一個錯字,但你的縮進使得它看起來像只有在你的if語句爲真時才執行線條。 2)我沒有看到這裏顯示的東西異步顯式執行。爲什麼你認爲這是運行異步而不是在UI線程上同步作爲委託? – JNYRanger

回答

0

OMG。也許這對別人有幫助。那麼,在ProjectName.Module.Web(或者只是ProjectName.Web)中,我需要打開Model - ActionDesign - Actions。然後,我選擇了我的操作並將IsPostBackRequired屬性設置爲True。就這樣。

此外,爲了得到這個屬性

var choiceAction = (menuItem.ActionProcessor as MenuActionItemBase).Action as SingleChoiceAction; 
bool usePostBack = (choiceAction as ActionBase).Model.GetValue<bool>("IsPostBackRequired"); 

這不是一個天才要比的東西的價值,但它是我很難找到