Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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 如何在单击相应按钮的单个视图上渲染多个模型的数据_Javascript_Html_Asp.net Mvc_Razor_Asp.net Mvc 5 - Fatal编程技术网

Javascript 如何在单击相应按钮的单个视图上渲染多个模型的数据

Javascript 如何在单击相应按钮的单个视图上渲染多个模型的数据,javascript,html,asp.net-mvc,razor,asp.net-mvc-5,Javascript,Html,Asp.net Mvc,Razor,Asp.net Mvc 5,我正在使用mvc5,我创建了一个Model tableData.cs类,其中包含以下代码: namespace WebApplication2.Models { public class tableData1 { public string Name { get; set; } public string Location { get; set; } public string Time { get; set; }

我正在使用mvc5,我创建了一个Model tableData.cs类,其中包含以下代码:

namespace WebApplication2.Models
{
    public class tableData1
    {
        public string Name { get; set; }
        public string Location { get; set; }      
        public string Time { get; set; }
    }
}
与之对应的我的控制器是:

namespace WebApplication2.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home

        public ActionResult tableData1()
        {
            ViewBag.NbColumns = 2;
            List<tableData1> tableDataModel = new List<tableData1>();
            tableDataModel.Add(new tableData1()
            {
                Name = "shekha",
                Location = "USA",               
                Time="12:00PM"
            });

            return View(tableDataModel.ToList());
        }    

    }
}
而在其中渲染此视图的div是:

<div id="theNewView" style="float: left; margin: 5px 2px 2px 5px;">     
</div>
现在我想做什么? 我想创建另一个具有相同字段的模型,比如tableData2.cs,在他的控制器中,我将这样做:

function FirstButtonClick(el)
    {
        $('#tab1').bind('click', function ()
        {        
            var url = 'Home/tableData1';
            $.ajax({
                url: url,
                data: {}, //parameters go here in object literal form
                type: 'GET',
                datatype: 'json',
                success: function (data) { $('div#theNewView').html(data); },
                error: function () { alert('something bad happened in FirstButtonClick'); }
            });
            alert("hello1");
        });
        $('#tab1').trigger('click');
    }
 public ActionResult tableData2()
        {
            ViewBag.NbColumns = 2;
            List<tableData2> tableDataModel = new List<tableData2>();
            tableDataModel.Add(new tableData2()
            {
                Name = "ajeet",
                Location = "allahbad",               
                Time = "1:00PM"
            });
            return View(tableDataModel.ToList());
        }
现在,我希望这个控制器在另一个按钮单击时将tableData1.cshtml中的tableData1的数据替换为tableData2控制器的数据

我的意思是我只想保留一个viewtableData1.cshtml,它包含一个表,我想对我的所有模型类(如tableData1.cs和tableData2.cshtml)重用这个视图

有可能这样做吗?怎么做

编辑:在stefen建议后,我将控制器代码更改为:

   public ActionResult tableData1()
        {
            ViewBag.NbColumns = 2;
            List<tableData1> tableDataModel = new List<tableData1>();
            tableDataModel.Add(new tableData1()
            {
                filterActiceDeviceList = true,
                filterIdleDeviceList = false,               
                Name = "shekha",
                Location = "USA",               
                Time = "12:00PM"
            });
            tableDataModel.Add(new tableData1()
            {
                filterActiceDeviceList=false,
                filterIdleDeviceList=true,
                Name = "ajeet",
                Location = "allahbad",             
                Time = "1:00PM"
            });           
            return View(tableDataModel);
        }
我添加了两个过滤器filterActiceDeviceList和filterIdleDeviceList,如果为true,则必须在tableData1.cshtml中显示与其表相对应的数据,但我无法理解我将如何编写代码来区分ajax调用中的FirstButtonClick和SecondButtonClick函数中的表数据,基于这些标记,以便每个按钮将显示与其真实值对应的数据


例如,在FirstButton中,单击将仅显示与filterActiceDeviceList=true对应的数据,该表在本例中由名称:shekha、位置:USA、时间=12:00PM组成。

注意,tableDataModel已经在列表中。你不必再打电话给.ToList`了,尤其是当你的模特只期望Enumerable@StephenMuecke好的,谢谢你的建议,我以后会记住的。因为你的视图是IEnumerable,所以你不能将它用于tableData2类型。它们是不同的类型,但是因为它们看起来都有相同的属性,为什么它们是不同的类型?如果tableData2返回IEnumerable,那么可以使用returnViewTableData1、tableDataModel@StephenMuecke我试着做了返回ViewtableData1,tableDataModel;在tableData2操作的控制器中,但它仍然不起作用。正如我在上一篇评论中所说的,您不能这样做,因为您在tableData2方法中创建的模型是IEnumerable,但tableData1.cshtml需要IEnumerable
   public ActionResult tableData1()
        {
            ViewBag.NbColumns = 2;
            List<tableData1> tableDataModel = new List<tableData1>();
            tableDataModel.Add(new tableData1()
            {
                filterActiceDeviceList = true,
                filterIdleDeviceList = false,               
                Name = "shekha",
                Location = "USA",               
                Time = "12:00PM"
            });
            tableDataModel.Add(new tableData1()
            {
                filterActiceDeviceList=false,
                filterIdleDeviceList=true,
                Name = "ajeet",
                Location = "allahbad",             
                Time = "1:00PM"
            });           
            return View(tableDataModel);
        }