我可以将子动作的返回值传递给 ASP.net 中的视图吗
Posted
技术标签:
【中文标题】我可以将子动作的返回值传递给 ASP.net 中的视图吗【英文标题】:Can I pass the return value of a child action to the view in ASP.net 【发布时间】:2021-11-30 22:07:19 【问题描述】:我正在尝试弄清楚如何将返回的值传递给视图,而不会出现任何异常。
我很难传递我的布尔值,因为它与我的视图模型异步。
控制器
[HttpGet]
[ChildActionOnly]
public async Task<bool> ValidateCurrentUser()
bool result = false;
try
if (string.IsNullOrEmpty(Session["ticketKey"].ToString()))
return result;
else
string ticket = Session["ticketKey"].ToString();
result = await _authenticationService.ValidateUser(ticket);
if (result)
return result;
catch (Exception)
return result;
return result;
剃刀页面
@
bool isvalid = string.Equals(html.Action("ValidateCurrentUser", "Authentication").ToString(), true);
if (isvalid)
<div>
RED
</div>
else
<div>
BLUE
</div>
【问题讨论】:
你用什么?网络还是网络核心? 这是.netframework 4.7.2 @Serge 【参考方案1】:如果您在执行顺序方面遇到问题并且事情没有同步发生,请使用 TaskCompletionSource()。
Convert Action<T> callback to an await
【讨论】:
我认为问题更多在于 Razor 不支持异步操作请求。 您遇到了什么异常? InvalidOperationException: HttpServerUtility.Execute【参考方案2】:试试这个。
[HttpGet]
[ChildActionOnly]
public async Task<bool> ValidateCurrentUser()
return await IsUserValid();
private async Task<bool> IsUserValid()
bool result = false;
try
if (string.IsNullOrEmpty(Session["ticketKey"].ToString())))
return result;
else
string ticket = Session["ticketKey"].ToString());
result = await _authenticationService.ValidateUser(ticket);
if (result)
return result;
catch (Exception)
return result;
return result;
【讨论】:
这会有什么不同? index 函数只是使用异步调用私有方法。 @Aniki 这只会给我 - InvalidOperationException: HttpServerUtility.Execute以上是关于我可以将子动作的返回值传递给 ASP.net 中的视图吗的主要内容,如果未能解决你的问题,请参考以下文章
通过 Ajax 将布尔值传递给 asp.net api 控制器
如何在 asp.net mvc 5 中返回模型和参数中的另一个动作?