0

私の見解は次のように始まります。

@using MyNamespace.Models.Mapping
@{
    PlacemarkKmlModel pmodel = new PlacemarkKmlModel();
    pmodel.Center.Latitude = 8.52115M;
    pmodel.Center.Longitude = -80.35981667M;
    pmodel.KmlObjectTokens kmlIDs = new List<string>();
    pmodel.KmlObjectTokens.Add("Sample1.kml");
    pmodel.KmlObjectTokens.Add("Sample2.kml");
}
@Html.Partial("_Mapping", @pmodel, @ViewData)

そして、Intellisenseは、3番目のpmodelステートメントで「タイプまたは名前空間'pmodel'が見つかりませんでした」という赤い下線を付けています。

pmodel.KmlObjectTokens kmlIDs = new List<string>();

PlacemarkKmlModel pmodel宣言にも、KmlObjectTokensのオートコンプリートも実行するが、3日にクラップスする次のステートメントでの同じ使用でもエラーが発生しないため、これは奇妙なことです。

ビューを実行すると、同じエラーが発生します。

CS0246: The type or namespace name 'pmodel' could not be found (are you missing a using directive or an assembly reference?)

このエラーは、pmodelについて不平を言うという意味で誤解を招く可能性がありますが、List()が気に入らないようです。

私のモデルは次のようになります。

public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
4

2 に答える 2

4

このようにしてみてください:

@using MyNamespace.Models.Mapping
@{
    PlacemarkKmlModel pmodel = new PlacemarkKmlModel();
    pmodel.Center.Latitude = 8.52115M;
    pmodel.Center.Longitude = -80.35981667M;
    pmodel.KmlObjectTokens = new List<string>();
    pmodel.KmlObjectTokens.Add("Sample1.kml");
    pmodel.KmlObjectTokens.Add("Sample2.kml");
}
@Html.Partial("_Mapping", pmodel, ViewData)

コード内で、コードスニペットを開く@(代わりに持っていたことに注意してください。@{

また、以下は無効なC#であることに注意してください。

pmodel.KmlObjectTokens kmlIDs = new List<string>();

KmlObjectTokensインスタンスにプロパティを割り当てるだけでよいと思いますpmodel。その場合、正しい構文は次のとおりです。

pmodel.KmlObjectTokens = new List<string>();

そして最後の注意:ビューはC#コードを含み、モデルを初期化することを意図していません。それはコントローラーの責任です。あなたはMVCパターンの責任を混同しているのではないかと思います。

于 2012-06-14T15:30:50.973 に答える
0

次のように、剃刀が < string > を HTML タグとして扱うという事実を回避できます。

  1. 文字列リストのファクトリがあるヘルパー クラスを作成します。

     public class Helpers
     {
        public static List<string> GetNewStringList()
        {
            return new List<string>();
        }
     }
    
  2. Razor ビューでそのファクトリを使用して、文字列の新しいリストを作成します。

    @pmodel.KmlObjectTokens = Helpers.GetNewStringList();

ただし、Darin が言ったように、MVC パターンに責任を混在させるべきではないため、モデルには、データが入力された KmlObjectTokens リストが既に含まれている必要があります。

于 2013-04-10T07:24:01.297 に答える