2013-02-07 57 views
-1

我有以下方法:方法重載不知道如何

public static MvcHtmlString GetQTip(this HtmlHelper htmlHelper, string propertyName, string message, string propertyNameOverride = "", QTipPosition position = QTipPosition.Right, bool includeEvents = true, string title = "") 
{ 
    string qtipPosition = String.Empty; 

    switch (position) 
    { 
    case QTipPosition.Right: 
     qtipPosition = "my: 'left center', at: 'right center'"; 
     break; 
    case QTipPosition.Left: 
     qtipPosition = "my: 'right center', at: 'left center'"; 
     break; 
    case QTipPosition.Top: 
     qtipPosition = "my: 'top middle', at: 'bottom middle'"; 
     break; 
    case QTipPosition.Bottom: 
     qtipPosition = "my: 'bottom middle', at: 'top middle'"; 
     break; 
    } 

    if (!String.IsNullOrWhiteSpace(propertyNameOverride)) 
    propertyName = propertyNameOverride; 

    if (String.IsNullOrWhiteSpace(title)) 
    title = htmlHelper.Resource(Resources.Global.Title.Information); 

    StringBuilder sb = new StringBuilder(); 
    sb.Append(String.Concat("$('#", propertyName, "').removeData('qtip').qtip({content: {text:")); 
    sb.Append(String.Concat("'", message, "', title: { text: '", title, "', button: false }}, position: { ", qtipPosition, " }")); 

    if (includeEvents) 
    sb.Append(", show: { event: 'focus mouseenter', solo: true, ready: false }, hide: 'blur'"); 

    sb.Append(", style: { classes: 'ui-tooltip-shadow ui-tooltip-yellow' } });"); 

    return new MvcHtmlString(sb.ToString()); 
} 

我怎麼叫這樣的:

<%: Html.GetQTip("training-module-name-container-" + module.CategoryId +"-" + module.TrainingModuleId, trainingModulePointsHintText, Zinc.Web.Extensions.QTipPosition.Bottom, true, Html.Resource(Resources.Training.Module.Completed.View.TrainingModulePoints))%>  

我只希望這些參數 感謝

+1

你的問題是模糊的。解釋你正在努力實現的目標以及上面的例子是錯誤的... –

+0

哎呀對不起,我編輯了我的OP –

+0

什麼不起作用?你得到哪個錯誤? – Yogu

回答

1

的問題是,你可以在中間不留下一個參數。您可以使用默認參數,但是您所遺漏的參數必須是列表中的最後一個參數。有關MSDN的解釋,請參閱here

解決您的問題,您有幾種選擇:

1)使propertyNameOverride參數的函數定義的最後一個參數如下:

public static MvcHtmlString GetQTip(this HtmlHelper htmlHelper, string propertyName, string message, QTipPosition position = QTipPosition.Right, bool includeEvents = true, string title = "", string propertyNameOverride = "") { 
    // do stuff 
} 

然後你可以離開它沒有問題。

2)使用參數,但只是把默認值:

<%: Html.GetQTip("training-module-name-container-" + module.CategoryId +"-" + module.TrainingModuleId, trainingModulePointsHintText, "", Zinc.Web.Extensions.QTipPosition.Bottom, true, Html.Resource(Resources.Training.Module.Completed.View.TrainingModulePoints))%> 

3)收件另一個函數,只有你想要的參數,然後調用使用默認參數的全功能的「空「位置:

public static MvcHtmlString GetQTip(this HtmlHelper htmlHelper, string propertyName, string message, QTipPosition position = QTipPosition.Right, bool includeEvents = true, string title = "", string propertyNameOverride = "") { 
    return htmlHelper.GetQTip("training-module-name-container-" + module.CategoryId +"-" + module.TrainingModuleId, trainingModulePointsHintText, "", Zinc.Web.Extensions.QTipPosition.Bottom, true, Html.Resource(Resources.Training.Module.Completed.View.TrainingModulePoints))%> 
}