Action方法是传递类型的实例而不是null

时间:2012-03-13 14:52:35

标签: c# asp.net-mvc asp.net-mvc-3 model-binding

我已经看到很多帖子Url.Action传递null而不是值,但没有我的问题。我有一个链接,我希望能够调用具有null值的方法。

方法是

public ActionResult ImpersonatePost(Role Role)
{
    Authentication.Impersonating = Role;

    return RedirectToAction("Index", "Home");
}
控制器Impersonate中的

我尝试了以下操作,但最终Role等于new Role()而不是nullRoleclass

<a href="@Url.Action("ImpersonatePost", "Impersonate", null)">None</a>

<a href="@Url.Action("ImpersonatePost", "Impersonate", default(Namespace.Role))">None</a>

每个请求角色定义为(格式不是实际属性

public class Role
{
    String Property {get;set;}
}

1 个答案:

答案 0 :(得分:1)

问题在于ASP.Net MVC3默认的可选参数绑定器。没有正确的方法可以将可选的url参数绑定到null。

如果你真的想要允许null参数,我建议将它添加到global.asax文件中的路由初始化代码中。

  routes.MapRoute(
                "Custom", 
                "{controller}/{action}/{nullableParamName}", 

            );

如果你的方法中有一个期望nullableParamName的方法并且它没有看到,那么它将把nullableParamName作为null。