2012-03-13 81 views
0

我見過很多帖子,Url.Action傳遞null而不是值,但沒有與我的問題。我有一個鏈接,我想能夠調用一個空值的方法。動作方法傳遞類型的實例而不是null

的方法是

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

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

我試過了以下,但它們都以Role等於new Role()而不是null結束。 Roleclass

<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

什麼是角色定義爲? – 2012-03-13 14:54:12

+0

'Url.Action'返回一個字符串,而不是一個新的'角色'。你的意思是說action方法中的role *參數是action方法執行時的'Role'而不是'null'嗎?這是因爲模型綁定。 – bzlm 2012-03-13 15:00:23

+0

@bzlm是的我的意思是當ImpersonatePost方法被調用角色等於新的角色()不爲空。 – Manatherin 2012-03-13 15:08:20

回答

1

問題與ASP.Net MVC3默認可選參數的粘合劑。還有就是要做出一個可選的URL不正確的方法參數綁定爲null。

如果你真的要允許一個空參數,我建議在Global.asax文件將它添加到您的路由初始化代碼。

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

      ); 

如果你有一個方法需要在它的路由中有nullableParamName,但它沒有看到它,它會將null的參數作爲null。

相關問題