asp.net-mvc – MVC5 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC5 Microsoft.CSharp.RuntimeBinder.RuntimeBinderException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在努力将MVC4项目转换为MVC5。第一天我遇到了一个“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”,但是能够通过开始我的转换来解决它。我不知道修复是什么是一个很大的,因为它再次发生。

当加载Login.cshtml页面时,_ExternalLoginsListPartial.cshtml中出现错误错误在第15行抛出(string action = Model.Action;)

@using Microsoft.Owin.Security

@{
    var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes();
    var authenticationDescriptions = loginProviders as AuthenticationDescription[] ?? loginProviders.ToArray();
    if (!authenticationDescriptions.Any())
    {
        <div>
            <p>There are no external authentication services configured. See <a href="http://go.microsoft.com/fwlink/?LinkId=313242">this article</a>
            for details on setting up this ASP.NET application to support logging in via external services.</p>
        </div>
    }
    else
    {
        string action = Model.Action;
        string returnUrl = Model.ReturnUrl;
        using (Html.BeginForm(action,"Account",new { ReturnUrl = returnUrl }))
        {
            @Html.AntiForgeryToken()
            <div id="socialLoginList">
                <p>
                @foreach (AuthenticationDescription p in authenticationDescriptions)
                {
                    <button type="submit" class="btn btn-default padded-8 margin-8" id="@p.AuthenticationType" name="provider" 
                            value="@p.AuthenticationType" title="Log in using your @p.Caption account">

                        <img src="@Url.Content("~/Content/Brands/"+p.Caption+".png")" alt="Microsoft" class="img-responsive" />
                        <br/>
                        <b>@p.Caption</b>
                    </button>
                }
                </p>
            </div>
        }
    }
}

抛出的错误

An exception of type ‘Microsoft.CSharp.RuntimeBinder.RuntimeBinderException’ occurred in System.Core.dll but was not handled in user code

Additional information: ‘object’ does not contain a definition for ‘Action’

快照说

Message : object’ does not contain a definition for ‘Action’
Source : Anonymously Hosted DynamicMethods Assembly

现在这是双重的,因为当我设置一个断点Model.Action不为null。我可以看到价值。

这真的令人沮丧。该应用程序工作5分钟前..我已经更改了一个非相关页面上的html,现在它不工作。

黑客修复
我宁愿知道为什么这个错误发生。也就是说,我有一个快速的修复,以防其他人遇到这个(因为这是默认解决方案的一部分)。解决方案是不使用动力学。创建您自己的viewmodel并传递。

public class ExternalLoginviewmodel
{
    [Display(Name = "ReturnUrl")]
    public string ReturnUrl { get; set; }

    [required]
    [Display(Name = "Action")]
    public string Action { get; set; }
}

 @Html.Partial("_ExternalLoginsListPartial",new ExternalLoginviewmodel { Action = "ExternalLogin",ReturnUrl = ViewBag.ReturnUrl })

解决方法

这个错误是由Microsoft验证的,他们正在修复它。

所以任何人从未来读这个:尝试更新visual studio 2013至少更新2。

https://connect.microsoft.com/VisualStudio/feedback/details/813133/bug-in-mvc-5-framework-asp-net-identity-modules

猜你在找的asp.Net相关文章