我已经看到很多帖子Url.Action
传递null而不是值,但没有我的问题。我有一个链接,我希望能够调用具有null值的方法。
方法是
public ActionResult ImpersonatePost(Role Role)
{
Authentication.Impersonating = Role;
return RedirectToAction("Index", "Home");
}
控制器Impersonate
中的。
我尝试了以下操作,但最终Role
等于new Role()
而不是null
。 Role
是class
。
<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;}
}
答案 0 :(得分:1)
问题在于ASP.Net MVC3默认的可选参数绑定器。没有正确的方法可以将可选的url参数绑定到null。
如果你真的想要允许null参数,我建议将它添加到global.asax文件中的路由初始化代码中。
routes.MapRoute(
"Custom",
"{controller}/{action}/{nullableParamName}",
);
如果你的方法中有一个期望nullableParamName的方法并且它没有看到,那么它将把nullableParamName作为null。