Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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
C# 显示包含部分视图的多个表。NETMVC_C#_Asp.net Mvc_Model_Partial Views - Fatal编程技术网

C# 显示包含部分视图的多个表。NETMVC

C# 显示包含部分视图的多个表。NETMVC,c#,asp.net-mvc,model,partial-views,C#,Asp.net Mvc,Model,Partial Views,我想使用3个局部视图在3个不同的表中显示我的搜索结果(客户端名称)。我不想在搜索完成之前显示表中的任何信息。据我所知,每个视图只能使用一个模型,除非进行一些变通 我尝试创建一个视图模型,以便可以从索引视图和局部视图中引用多个表。但是我想不出来。由于3个不同表的方法基本相同,我只想发布客户机表的代码。任何帮助或指点都将不胜感激 视图模型: public class ViewModel { public List<Clients> allClients { ge

我想使用3个局部视图在3个不同的表中显示我的搜索结果(客户端名称)。我不想在搜索完成之前显示表中的任何信息。据我所知,每个视图只能使用一个模型,除非进行一些变通

我尝试创建一个视图模型,以便可以从索引视图和局部视图中引用多个表。但是我想不出来。由于3个不同表的方法基本相同,我只想发布客户机表的代码。任何帮助或指点都将不胜感激

视图模型:

public class ViewModel
    {

        public List<Clients> allClients { get; set; }
        public List<OrderLines> allOrders { get; set; }
        public List<ViewNewOrderSum> allViewNewOrderSum { get; set; }

    }
公共类视图模型
{
公共列表所有客户端{get;set;}
公共列表allOrders{get;set;}
公共列表allViewNewOrderSum{get;set;}
}
家庭控制器:

using testForAutofill.Models;

public class HomeController : Controller
    {
        test_Db_Context db = new test_Db_Context();
        // GET: Home
        public ActionResult Index()
        {
            ViewModel vm = new ViewModel();
            vm.allClients = GetClients();
            return View();
        }

     private List<Clients> GetClients()
        {
            List<Clients> clientList = new List<Clients>();
            clientList = db.Clients.ToList();
            return clientList;
        }

[HttpPost]
        public ActionResult Index(string searchTerm)
        {

            Scaleit_Db_Context db = new Scaleit_Db_Context();
            List<Clients> orderSums;
            if (string.IsNullOrEmpty(searchTerm))//Fix this!
            {
                orderSums = db.Clients.ToList();
            }
            else
            {
                orderSums = db.Clients.Where(x => x.Name.Equals(searchTerm)).ToList();
            }
            return View(orderSums);
        }
@using objectNamespace

@(((objectType)ViewData["object"]).name)
使用testForAutofill.Models;
公共类HomeController:控制器
{
test_Db_Context Db=新的test_Db_Context();
//到家
公共行动结果索引()
{
ViewModel vm=新的ViewModel();
vm.allClients=GetClients();
返回视图();
}
私有列表GetClients()
{
List clientList=新列表();
clientList=db.Clients.ToList();
返回客户列表;
}
[HttpPost]
公共操作结果索引(字符串搜索术语)
{
Scaleit_Db_Context Db=新的Scaleit_Db_Context();
列出订单金额;
if(string.IsNullOrEmpty(searchTerm))//修复此问题!
{
orderSums=db.Clients.ToList();
}
其他的
{
orderSums=db.Clients.Where(x=>x.Name.Equals(searchTerm)).ToList();
}
返回视图(orderSums);
}
索引视图:

@using testForAutofill.Models;
@model testForAutofill.Models.ViewModel

@if (Model.allClients != null && Model.allClients.Count() > 0)
{
@using (Html.BeginForm())
{
    <b>Kundenavn:</b>
    @Html.TextBox("searchTerm", null, new { id = "txtSearch" })
    <input type="submit" value="TRY:
Set object on viewData 

inside controller:

    ActionResult SomeView(){

     ViewData["object"] = theObj;
     return View();

    }
@使用testForAutofill.Models;
@模型测试ForAutoFill.Models.ViewModel
@if(Model.allClients!=null&&Model.allClients.Count()>0)
{
@使用(Html.BeginForm())
{
昆德纳夫:
@TextBox(“searchTerm”,null,新的{id=“txtSearch”})
尝试:
在viewData上设置对象

内部控制器:

using testForAutofill.Models;

public class HomeController : Controller
    {
        test_Db_Context db = new test_Db_Context();
        // GET: Home
        public ActionResult Index()
        {
            ViewModel vm = new ViewModel();
            vm.allClients = GetClients();
            return View();
        }

     private List<Clients> GetClients()
        {
            List<Clients> clientList = new List<Clients>();
            clientList = db.Clients.ToList();
            return clientList;
        }

[HttpPost]
        public ActionResult Index(string searchTerm)
        {

            Scaleit_Db_Context db = new Scaleit_Db_Context();
            List<Clients> orderSums;
            if (string.IsNullOrEmpty(searchTerm))//Fix this!
            {
                orderSums = db.Clients.ToList();
            }
            else
            {
                orderSums = db.Clients.Where(x => x.Name.Equals(searchTerm)).ToList();
            }
            return View(orderSums);
        }
@using objectNamespace

@(((objectType)ViewData["object"]).name)
在cshtml内部:


尝试“@Model.allClients.Name”而不是“@Html.Model.allClients.Name”这会在名称下给我一条红线:“无法将方法组“Name”转换为非委托类型“Object”,您是否打算调用该方法?”是的,因为allClients是一个列表,上面没有名称。当您呈现部分
@Html.partial(\u Client)时,clients)
您正在将一个“clients”对象传递给partial。如果这是您的意图,那么_clientspartial应该具有model
@model testForAutofill.Models.clients
(可能更好的名称是Client)。然后它将具有@model.name。这是您的意图吗?然后您还需要更改
@Html.DisplayFor(modelItem=>clients.Name)
@Html.DisplayFor(m=>m.Name)
对于所有
@Html.DisplayFor(modelItem=>…
现在运行,但在我搜索之前它会显示所有的客户端。包含客户端的表将非常大,这样才有用。