私はアプリケーションにいくつかの動的ロジックを作ろうとしていますが、コンポーネントは協力したくありません。Bussiness Packアラートコンポーネントで苦労しています
これは、マスターページのViewModelです:
public class AdminMasterPageViewModel : DotvvmViewModelBase
{
public virtual AlertComponent AlertComponent { get; set; }
public DotVVM.BusinessPack.Controls.AlertType AlertType { get; set; }
public AdminMasterPageViewModel()
{
}
public override Task Init()
{
InitAlertComponents();
return base.Init();
}
private void InitAlertComponents()
{
AlertComponent = new AlertComponent
{
IsDisplayed = false,
Text = "Default",
Type = AlertComponent.Types.Info
};
AlertType = DotVVM.BusinessPack.Controls.AlertType.Info;
}
}
これはMasterViewでdothtmlです: "子" で
<%--MAIN CONTENT BY PLACEHOLDER--%>
<div class="content-wrapper">
<bp:Alert Type="{value: AlertType}"
IsDisplayed="{value: AlertComponent.IsDisplayed}"
AllowDismiss="true"
Text="{value: AlertComponent.Text}"
AutoHideTimeout="3" />
<dot:ContentPlaceHolder ID="MainContent" />
</div>
ViewModelに私はこのイベントを持っている:
public async void SaveUserRoleGroup()
{
UserRoleGroupDetailDTO.AppRoleForUserRoleGroupListDTOs = AppRoleListDTOs.Items.Where(i => i.IsAllowed = true).ToList();
AlertComponent = await userRoleGroupDetailFacade.CreateUserRoleGroupAsync(UserRoleGroupDetailDTO);
}
のための私のクラスrepresenterこのコンポーネントは:
public class AlertComponent
{
public bool IsDisplayed { get; set; }
public string Text { get; set; }
public Types Type { get; set; }
public enum Types
{
Success, Info, Warning, Danger
}
}
そして最後に、私のファサード機能:あなたが見ることができるように
public async Task<AlertComponent> CreateUserRoleGroupAsync(UserRoleGroupDetailDTO dto)
{
using (var uow = unitOfWorkProvider.Create())
{
try
{
var userRoleGroup = Mapper.Map<UserRoleGroup>(dto);
userRoleGroup.PortalSetting = portalSettingRepository.GetById(1);
repository.Insert(userRoleGroup);
await uow.CommitAsync();
}
catch (Exception e)
{
return new AlertComponent
{
Text = "Error",
IsDisplayed = true,
Type = AlertComponent.Types.Danger
};
}
}
return new AlertComponent
{
Text = "Success",
IsDisplayed = true,
Type = AlertComponent.Types.Success
};
}
、私はSaveUserRoleGroup機能でAlertComponentを設定していますが、ブラウザの何に起こります。 AlertTypeが変更されていませんが、それでも問題はありませんが、それでもMasterViewModelで設定したデフォルトのAlertType情報があります。 なぜアラートは表示され、機能していないのですか?
はあなたが唯一のviewmodel初期に設定されたAlertTypeオブジェクトのプロパティへのアラートタイプをバインド返信
ページのコマンドで呼び出されるメソッドで 'async void'を使うのは良いことではありません。なぜなら、DotVVMは操作が完了するまで待つことができないからです。 公共非同期無効SaveUserRoleGroup(){...} あなたは解決タスクSaveUserRoleGroup(){...} –