2012-07-23 32 views
3

我有一个观察的阵列在我的视图模型“IdOfInvitedSocialCompaigns”创建链接,这个属性包含的ID的数组,我想这样的创建链接:与knockoutjs

@Html.ActionLink("Compaign","Confirmation", new {socialbuzzCompaignId = id}) 

我怎样才能建立这样的链接与knockoutjs,这里是视图模型的一部分:

function DashboardViewModel() { 
    var self = this;   
    self.IdOfInvitedSocialCompaigns = ko.observableArray([]); 
    } 

回答

5

你也许可以建立部分剃刀生成的URL直接到您的绑定标记,如果你得到了逃避的权利,但它会是混乱的。我可能会定义它获取通过页面上的DOM填充准备像等DashboardViewModel基础URL属性:

dashVM.urls.confirmCampaignUrl = '@(Url.Action("Campaign", "Confirmation"))'; 

,然后有一个函数,得到一个特定的URL:

self.getCampaignConfirmationUrl =功能(id){ return self.urls.confirmCampaignUrl +'/'+ id; };

约束,像这样:

<!-- ko foreach: IdOfInvitedSocialCompaigns --> 
<a data-bind="attr: { href: dashVM.getCampaignConfirmationUrl($data) }">Confirm</a> 
<!-- /ko --> 
+0

汤姆先生,请注意网址将是这样的:?战役/确认socialbuzzCompaignId = ID – ucef 2012-07-23 03:02:38

+1

好的,但是你既可以硬编码socialbuzzCompaignId参数名进入该基地URL属性,或者你可以将它设置为:@(Url.Action(“Compaign”,“Confirmation”,new {socialbuzzCompaignId =“{0}”})),然后该函数将是:return self.urls.confirmCampaignUrl。替换('{0}',id) – 2012-07-23 03:47:14

+0

实际上,Url.Action会对那些大括号进行编码,但您得到这个想法。 – 2012-07-23 03:50:03