2013-03-21 50 views
0

這就是我現在所擁有的工作正常:Html.ActionLink內嵌if語句

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current"} : null) 

我想要做的就是給它一個ID爲好,保持該ID即使條件是假。 因此,像這樣:

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", id = "Home" } : new { id = "Home" }) 

另外,我想成立一​​個onclick()功能,而不是直接點擊到控制器。

回答

1

AFAIK,@Html.ActionLink()幫助程序僅用於創建指向控制器的鏈接。但是,對於爲其分配onclick()函數的問題,有一個非常簡單的解決方法。

例子: (我假設爲onclick事件JavaScript函數)

<script type="text/javascript"> 
    function foo(string){ 
    alert(string); 
    return false; //Very Important 
    } 
</script> 

所以後來在ActionLink的,你可以把:

@Html.ActionLink("Home", "", "", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home",onclick="javascript:foo('foo2');" } : new { @id = "Home" }) 

注意return false部分在JS功能。如果在點擊ActionLink後不希望頁面刷新,這一點非常重要。在ActionLink的ActionName和RouteValues中輸入空字符串也會阻止它調用控制器。

至於你的ID的問題的第一部分,記得ID之前把@:

@Html.ActionLink("Home", "Index", "Home", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home" } : new { @id = "Home" }) 

所以最後ActionLink的會是這個樣子:

@Html.ActionLink("Home", "", "", null, (ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) ? new { @class = "current", @id = "Home",onclick="javascript:somefunction()" } : new { @id = "Home" }) 

說完就把我不確定你是否可以指定: new {@id = "Home"}

所以要解決這個問題,我會建議像這樣的:

@if(ViewBag.SelectedPage == CurrentPageEnums.SelectedViewEnum.Home) 
{ 
    @Html.ActionLink("Home", "", "", null, new { @class = "current", @id = "Home", onclick="javascript:alert('True');return false;" }) 
} 
else 
{ 
//Not sure what you would like to put in the else clause 
@Html.ActionLink("Home", "", "", null, new { @class = "current", @id = "Home", onclick="javascript:alert('False');return false;"}) 
} 
+0

我不得不將類和id添加到雙方,但它確實有效。我也必須在頁面的actionlink中放入false來刷新頁面。謝謝你的幫助。 – NNassar 2013-03-22 19:11:19