Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 剃须刀不';无法识别列表()?_Asp.net Mvc 3_Razor_Generic List - Fatal编程技术网

Asp.net mvc 3 剃须刀不';无法识别列表()?

Asp.net mvc 3 剃须刀不';无法识别列表()?,asp.net-mvc-3,razor,generic-list,Asp.net Mvc 3,Razor,Generic List,我的观点是这样开始的: @using MyNamespace.Models.Mapping @{ PlacemarkKmlModel pmodel = new PlacemarkKmlModel(); pmodel.Center.Latitude = 8.52115M; pmodel.Center.Longitude = -80.35981667M; pmodel.KmlObjectTokens kmlIDs = new List<string>();

我的观点是这样开始的:

@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)
public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
@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)
这个错误是误导性的,因为它抱怨pmodel,但它似乎不喜欢List()

我的模型如下所示:

@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)
public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
@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)
公共类placemarkkml模型
{
公共视口中心模型中心{get;set;}
公共列表KmlObjectTokens{get;set;}
}
试着这样做:

@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)
public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
@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)
我猜您只是想在
pmodel
实例上分配
KmlObjectTokens
属性,在这种情况下,正确的语法是:

pmodel.KmlObjectTokens = new List<string>();
pmodel.KmlObjectTokens=new List();
最后一句话:视图不打算包含C代码和初始化模型。这是控制员的责任。我担心您混淆了MVC模式中的职责。

尝试如下:

@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)
public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
@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)
我猜您只是想在
pmodel
实例上分配
KmlObjectTokens
属性,在这种情况下,正确的语法是:

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

最后一句话:视图不打算包含C代码和初始化模型。这是控制员的责任。恐怕您混淆了MVC模式中的职责。

您可以绕过razor将视为HTML标记的事实,如下所示:

@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)
public class PlacemarkKmlModel
{
    public ViewportCenterModel Center { get; set; }

    public List<string> KmlObjectTokens { get; set; }
}
@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)
  • 创建具有字符串列表工厂的帮助器类:

     public class Helpers
     {
        public static List<string> GetNewStringList()
        {
            return new List<string>();
        }
     }
    
    公共类助手
    {
    公共静态列表GetNewStringList()
    {
    返回新列表();
    }
    }
    
  • 在razor视图中使用该工厂创建新的字符串列表:

    @pmodel.KmlObjectTokens=Helpers.GetNewStringList()


  • 但是,正如Darin所说,您不应该在MVC模式中混用职责,因此该模型应该已经包含了用数据填充的KmlObjectTokens列表。

    您可以绕过razor将视为HTML标记的事实,如下所示:

    @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)
    
    public class PlacemarkKmlModel
    {
        public ViewportCenterModel Center { get; set; }
    
        public List<string> KmlObjectTokens { get; set; }
    }
    
    @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)
    
  • 创建具有字符串列表工厂的帮助器类:

     public class Helpers
     {
        public static List<string> GetNewStringList()
        {
            return new List<string>();
        }
     }
    
    公共类助手
    {
    公共静态列表GetNewStringList()
    {
    返回新列表();
    }
    }
    
  • 在razor视图中使用该工厂创建新的字符串列表:

    @pmodel.KmlObjectTokens=Helpers.GetNewStringList()


  • 但是,正如Darin所说,您不应该在MVC模式中混合责任,因此该模型应该已经包含填充了数据的KmlObjectTokens列表。

    +1关于MVC模式责任的最后一条评论+1关于MVC模式责任的最后一条评论