Методу действия передается экземпляр типа вместо нуля - PullRequest
0 голосов
/ 13 марта 2012

Я видел много постов с Url.Action, пропускающими ноль вместо значения, но ни одного с моей проблемой.У меня есть одна ссылка, которую я хочу иметь возможность вызывать метод с нулевым значением.

Метод

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;}
}

1 Ответ

1 голос
/ 13 марта 2012

Проблема в связывателе необязательных параметров ASP.Net MVC3 по умолчанию.Не существует правильного способа привязать необязательный параметр url к null.

Если вы действительно хотите разрешить нулевой параметр, я бы предложил добавить его в код инициализации маршрутизации в файле global.asax.

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

            );

Если у вас есть метод, ожидающийnullableParamName в своем маршруте, и он не видит этого, он примет nullableParamName как ноль.

...