Условное обработка множественных валидации Messages с помощью модели validatecomplextype в редактированииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Условное обработка множественных валидации Messages с помощью модели validatecomplextype в редактировании

Сообщение Anonymous »

В блазорном веб -приложении мне нужно было условное обработку множественного , потому что они не связаны с одной функцией. Следует выполнять на кнопке нажмите, чтобы запустить изменение состояния для этой функции.
Например, кнопка нажимается, а State1 IS true , а State2 в настоящее время является false .
, если я продолжу, либо state1 function function и verse function и verse function и vesture -функция, и versa> vescupt function и versa -функция, или vescupt wers, или vescupt function, или vescupd wers, или vescupt function. /> < /li>
[*] Он должен обрабатывать сообщения проверки соответственно с их конкретными функциями. < /p>
< /li>
< /ul>
Но это не достигнуто в моей текущей настройке. PrettyPrint-Override ">

Код: Выделить всё

[Keyless]
public class SomeModel
{
[Required]
[ValidateComplexType]
public SomeOtherModel SomeOtherModel { get; set; }

[Required]
public string? SelectedRoleID { get; set; }

[Required(ErrorMessage = "Required field.")]
public string? SelectedRole { get; set; }

[Required]
public string? SelectedRemarkID { get; set; }

[Required(ErrorMessage = "Required field.")]
public string? SelectedRemark { get; set; }

public SomeModel() // for demonstration purposes only XD, I observed that it is not currently in use.
{
SomeOtherModel = new SomeOtherModel();
}
}

[Keyless]
public class SomeOtherModel
{
[Required]
public string? SomeField { get; set; }
// other fields here...
}
< /code>
 страница Razor < /h3>
 client-side < /h4>
@page "/users/review-user"
@page "/users/review/{Id}/user"
@rendermode InteractiveServer
@using Microsoft.EntityFrameworkCore
@using MyProject.Models.SQLServer
@using MyProject.Data.SQLServer
@implements IAsyncDisposable
@inject IDbContextFactory DbFactory
@inject NavigationManager NavigationManager
@inject IJSRuntime JS

Details

Review User




@if (plainTextModel is null)
{


Loading...


}
else
{








#
@rowNum

Role
@if (isModifyUser)
{


@if (userRoles is null)
{


Loading...


}
else
{

@(SomeModel.SelectedRole ?? "Please select a role")


@foreach (var role in userRoles)
{
@role.RoleType

}



}


}
else
{
@plainTextModel.RoleType
}


@if (isModifyUser || isReevaluateUser)
{


Save Changes

Discard


}






Remarks
@if (isReevaluateUser)
{

@if (userRemarks is null)
{


Loading...


}
else
{

@(SomeModel.SelectedRemark ??
"Please select a remark")

@foreach (var remark in userRemarks)
{
@remark.Remarks

}



}

}
else
{
@if (plainTextModel.Remarks == null)
{
-
}
else
{
@plainTextModel.Remarks
}
}


Reevaluate
User
Modify User
Role




@if (reviewUserListImageSingle is null)
{


Loading...


}
else
{





@*other code here*@




@*other code here*@




@*other code here*@





}


}


role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="1500">


Successfully modified!





class="toast align-items-center text-bg-danger border-0 position-fixed bottom-0 end-0 mb-3 me-3" role="alert"
aria-live="assertive" aria-atomic="true" data-bs-delay="1500">

@if (errorMessage is not null)
{

@errorMessage

}
else
{

Someting went wrong.  Please try again later.

}




aria-hidden="true">



Are you sure you want to verify this user?

Close

@*  *@
Confirm





< /code>
 server-side < /h4>
@code {
private SomeModel SomeModel = new SomeModel();
private PlainTextModel? plainTextModel = new();
private UserListImageSingleDM? reviewUserListImageSingle = new();
private List? userRoles = new();
private List? userRemarks = new();
private SQLServerContext context = default!;

[SupplyParameterFromQuery(Name = "status")]
private bool status { get; set; }

[SupplyParameterFromQuery(Name = "row")]
private long rowNum { get; set; }

[Parameter]
public string? Id { get; set;  }

private bool isModifyUser = false;
private bool isReevaluateUser = false;
private string? errorMessage;
private string? output;

protected override async Task OnInitializedAsync()
{
context = DbFactory.CreateDbContext();
await LoadPlainText();
}

private async Task LoadPlainText()
{
var sQLServerHelper = new SQLServerHelper(context);
var spParamPlainText = SQLServerInnerHelper.GlobalMethodRazorPageParam(id: Id, key:
"REVIEW_USER_PLAINTEXT");
plainTextModel = await sQLServerHelper.PlainTextAsync("myStoredProcedure", spParamPlainText);
// TODO: Let this load first.

if (plainTextModel is null)
{
NavigationManager.NavigateTo("notfound");
}
StateHasChanged();
}

private async Task ModifyUser()
{
SomeModel.SelectedRemark = null;
isModifyUser = true;
isReevaluateUser = false;
// data fetch for userRoles
}

private async Task ReevaluateUser()
{
SomeModel.SelectedRoleID = null;
SomeModel.SelectedRole = null;
isReevaluateUser = true;
isModifyUser = false;
// data fetch for userRemarks
}

private void Discard()
{
isModifyUser = false;
isReevaluateUser = false;
}

private void OnRoleItemSelected(UserRoles item)
{
SomeModel.SelectedRoleID = item.RoleID ?? string.Empty;
SomeModel.SelectedRole = item.RoleType ?? string.Empty;
SetActiveRole(SomeModel.SelectedRoleID);
}

private void OnRemarkItemSelected(UserRemarks item)
{
SomeModel.SelectedRemarkID = item.RemarkID ?? string.Empty;
SomeModel.SelectedRemark = item.Remarks ?? string.Empty;
}

private void SetActiveRole(string id)
{
if (userRoles is null) return;

foreach (var role in userRoles)
role.IsActive = role.RoleID == id;
}

private async Task VerifyUser()
{
if (isModifyUser)
{
var sQLServerHelper = new SQLServerHelper(context);
var spParam = SQLServerInnerHelper.ManageUsersDataWOutputPageParams(userID: Id, roleID:
SomeModel.SelectedRoleID, functionKey:
"TEST_KEY_1");
output = await sQLServerHelper.StringOutputAsync("myStoredProcedure", spParam);
if (output is not null && output == "SUCCESSFUL")
{
await JS.InvokeVoidAsync("showLiveToast");
}
else if (output is not null && output != "SUCCESSFUL")
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
else
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
}
else if (isReevaluateUser)
{
var sQLServerHelper = new SQLServerHelper(context);
var spParam = SQLServerInnerHelper.ManageUsersDataWOutputPageParams(userID: Id, remarkID:
SomeModel.SelectedRemarkID, functionKey:
"TEST_KEY_2");
output = await sQLServerHelper.StringOutputAsync("myStoredProcedure", spParam);
if (output is not null && output == "SUCCESSFUL")
{
await JS.InvokeVoidAsync("showLiveToast");
}
else if (output is not null &&  output != "SUCCESSFUL")
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
else
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
}
else
{
var sQLServerHelper = new SQLServerHelper(context);
var spParam = SQLServerInnerHelper.ManageUsersDataWOutputPageParams(userID: Id, userIDModifier: "DevQt",
functionKey:
"TEST_KEY_3");
output = await sQLServerHelper.StringOutputAsync("myStoredProcedure", spParam);
if (output is not null && output == "SUCCESSFUL")
{
await JS.InvokeVoidAsync("showLiveToast");
}
else if (output is not null && output != "SUCCESSFUL")
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
else
{
errorMessage = null;
await JS.InvokeVoidAsync("showLiveToastError");
}
}
}

public async ValueTask DisposeAsync() // this is important
{
await context.DisposeAsync();
}
}
Я ожидал, что это будет работать должным образом, поскольку он условно управляется с помощью состояний: ismodifyuser и isreevaluateuser . Но это не так.
< /code>

< /code>

< /code>
But I needed those classes to implement validation in the simplest way possible.
The concept of my project is inspired by this thread:
  • Multiple Model validation in single EditForm in Server-Side Blazor
Moreover, this portion of my Blazor web app project will serve as the main reference for its other modules.

Подробнее здесь: https://stackoverflow.com/questions/797 ... xtype-mode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»