【问题标题】:Can I pass the return value of a child action to the view in ASP.net我可以将子动作的返回值传递给 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

标签: c# html asp.net asp.net-mvc razor


【解决方案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
猜你喜欢
  • 2010-09-18
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多