Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
使用部分视图、javascript和viewbag foreach时出错_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 4_Viewbag - Fatal编程技术网

使用部分视图、javascript和viewbag foreach时出错

使用部分视图、javascript和viewbag foreach时出错,javascript,jquery,asp.net-mvc,asp.net-mvc-4,viewbag,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,Viewbag,我正在尝试使用JavaScript加载一个局部视图,反过来,局部视图将有一个“视图包”来循环。 一切都很正常,直到我尝试渲染局部视图,如果我移除局部视图加载的视图包循环,我会得到一个“对象””错误 控制器 [HttpPost] public ActionResult ServiceDetails(int id ) { int count = 0; var m = from c in db.ServiceCategor

我正在尝试使用JavaScript加载一个局部视图,反过来,局部视图将有一个“视图包”来循环。 一切都很正常,直到我尝试渲染局部视图,如果我移除局部视图加载的视图包循环,我会得到一个“对象””错误

控制器

[HttpPost]
        public ActionResult ServiceDetails(int id )
        {
            int count = 0;

           var m = from c in db.ServiceCategoryFields
                    where c.serviceTypeID == id
                    select c;
            ViewBag.count  = count;
            ViewBag.m = m.ToList();
            return PartialView(m.ToList());
        }
局部视图

<table style ="width:100% ">
     <tr>
     @foreach (var image in (List<String>)ViewBag.m)
    {
        <td>
           @image
        </td>
     }  

  </tr>
快速解决方案 基于下面的控制器代码

[HttpPost]
public ActionResult ServiceDetails(int id )
{
    int count = 0;

    var m = from c in db.ServiceCategoryFields
            where c.serviceTypeID == id
            select c;
    ViewBag.count  = count;
    ViewBag.m = m.ToList();
    return PartialView(m.ToList());
}
ViewBag.m
将是
List
的一个实例,但您可以在局部视图中将其转换为
List

@foreach (var image in (List<String>)ViewBag.m)
替代解决方案 以前的解决方案需要转换
ViewBag.m
,如果将
ViewBag.m
转换为错误的类型,则可能会产生运行时错误。使用此替代解决方案可以避免局部视图中的转换

首先要做的是创建一个模型类,该模型类将由局部视图使用,比如说类名是
servicedtailsviewmodel
,它具有
Count
Images
属性

public class ServiceDetailsViewModel
{
    public int Count { get; set; }
    public List<string> Images { get; set; }
}
通过在局部视图代码顶部使用以下语法,将
ServiceDetailsViewModel
设置为模型

@model ServiceDetailsViewModel
并在模型中循环。图像如下

<table style ="width:100% ">
    <tr>
    @foreach (var image in Model.Images)
    {
        <td>
           @image
        </td>
    }  
    </tr>

@foreach(Model.Images中的var图像)
{
@形象
}  

局部视图有模型吗?显示包含什么?应该是包含partialview的div。类似于:var display=$(“MySelector”)。在ajax调用之前设置。在使用
display.html(数据)呈现它之前,您会得到什么响应;
?可能是因为发生了强制转换错误?LINQ查询是否返回字符串列表或复杂对象列表?我建议也使用或使用模型或viewbag,而不是两者都使用。
ServiceCategoryField
类看起来像什么?
[HttpPost]
public ActionResult ServiceDetails(int id )
{
    int count = 0;

    var m = from c in db.ServiceCategoryFields
            where c.serviceTypeID == id
            select c.PropertyName;

    ServiceDetailsViewModel model = new ServiceDetailsViewModel();
    model.Count  = count;
    model.Images = m.ToList();

    return PartialView(model);
}
@model ServiceDetailsViewModel
<table style ="width:100% ">
    <tr>
    @foreach (var image in Model.Images)
    {
        <td>
           @image
        </td>
    }  
    </tr>