1

私はこのコードを持っています:

 namespace Zinc.Web.Extensions.DataModel.Training
 {
   public static class TrainingModuleProgressStateDataModelExtentions
   { 
      public static string GetHintText(String aString)
      {

         //must still make up astring here
         return aString;
       }
   }
 }

 namespace Zinc.DataModels.Training
 {
    public class TrainingModuleProgressStateDataModel
    {
      public IEnumerable<UserTrainingPointsDataModel> UserTrainingPoints { get; set; }
    }
  }

  public class UserTrainingPointsDataModel
  {
    public virtual int InteractionType { get; set; }
    public virtual int Points { get; set; }
    public virtual string Name { get; set; }
    public virtual string IncentiveTrainingModuleOptionName { get; set; }
  }

私のリポジトリでは、UserTrainingPoints に追加します。

 string RawPoints = row["RawPoints"].ToString();
 string[] rawPoints = RawPoints.Split(new char[] { '|' });
 List<UserTrainingPointsDataModel> points = new List<UserTrainingPointsDataModel>();

 foreach (var RawPoint in rawPoints)
 {
   string[] entry = RawPoint.Split(new char[] { ',' });
   var point = new UserTrainingPointsDataModel();
   point.Name = entry[0];
   point.Points = Convert.ToInt32(entry[1]);
   point.InteractionType = Convert.ToInt32(entry[2]);
   point.IncentiveTrainingModuleOptionName = entry[3];
   points.Add(point);  

 }
 trainingModuleProgressState.UserTrainingPoints = points;
 data.Add(trainingModuleProgressState);

私の見解では、 UserTrainingPoints の値を取得して文字列を作成し、ツールチップに表示する拡張メソッドを呼び出す必要があります。

私の質問は、拡張メソッドを実装して、自分のビューで呼び出すことができるようにするにはどうすればよいですか?

私のビューコード:

 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Zinc.Models.Training.TrainingModuleProgressStateDataModelResults>" %>
 <%@ Import namespace="Zinc.Web.Extensions.DataModel.Training" %> //added this

  <% if (module.HasAssessment)
  { %>
     <div class="<%: moduleStateClass %>">&nbsp;</div>
     <div class="<%: moduleScoreClass %>"><%: module.ModuleScore %>%</div>
     <% Zinc.Web.Extensions.DataModel.Training.TrainingModuleProgressStateDataModelExtentions.GetHintText(module.UserTrainingPoints); %>  //still not correct here
4

2 に答える 2

4

UserTrainingPointsであるためIEnumerable<UserTrainingPointsDataModel>、拡張メソッドの署名は

public static string GetHintText(this IEnumerable<UserTrainingPointsDataModel> points)
{
    string aString;
    //must still make up astring here
    return aString;
}

次に、このように呼び出すことができます

module.UserTrainingPoints.GetHintText();
于 2013-01-07T14:06:58.710 に答える
0

拡張メソッドへのアクセスは、通常の方法と同じです。ただし、 @using キーワードを使用して、拡張機能が追加された名前空間への参照を作成するように注意する必要があります。

于 2013-01-07T14:04:46.840 に答える