我的模型中有以下内容:
public sealed class OAuthProvider
{
private readonly string name;
private const string SOME_PROVIDER = "SOMEPROVIDER";
public static readonly OAuthProvider SomeProvider = new OAuthProvider(SOME_PROVIDER);
private OAuthProvider(String name) { this.name = name; }
public override String ToString(){ return name; }
public static implicit operator string(OAuthProvider oAuthProvider)
{
return oAuthProvider.name;
}
public static implicit operator OAuthProvider(string oAuthProvider)
{
switch (oAuthProvider)
{
case SOME_PROVIDER : return SomeProvider ;
default: return null;
}
}
}
这在我的OAuth
控制器中:
public ActionResult Profile(OAuthProvider network)
{...}
在我看来,这是:
@model SomeModel
Html.RenderAction("Profile", "OAuth", new { network = Model.Network });
Model.Network
一个在哪里string
呈现此视图时,我可以看到(通过断点)Model.Network
作为string
非空值传入。尽管隐式类型转换已经到位,但MyProfile(OAuthProvider)
正在被调用。network
null
我会以错误的方式解决这个问题吗?我是否被迫进行明确的演员表?