簡體   English   中英

顯示具有部分視圖的多個表。 Asp.Net Mvc

[英]Showing multiple tables with partial views. Asp.Net Mvc

我想使用3個局部視圖在3個不同的表中顯示我的搜索結果(客戶端名稱)。 我不想在搜索完成之前顯示表中的任何信息。 據我了解,除非您采取一些解決方法,否則每個視圖只能使用一種模型。

我試圖建立一個視圖模型,以便可以從索引和局部視圖中引用多個表。 但是無法弄清楚。 由於3個不同表的方法幾乎相同,因此我只發布客戶機表的代碼。 任何幫助或指針將不勝感激

視圖模型:

public class ViewModel
    {

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

    }

HomeController的:

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);
        }

IndexView:

@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="🔍 Search" class="btn btn-primary" id="btn-search" />
@using (Html.BeginForm())
{

    <div class="card-container">
        <div class="card border-primary mb-3 card-client" style="max-width: 40rem;">
            <div class="card-header">Kunde</div>
            <div class="card-body">
                <table class="table table-hover">
                    @foreach (Clients clients in Model.allClients)
                     {
                      @Html.Partial("_Client", clients)
                     }
                </table>

            </div>
        </div>
    </div>
}

_客戶:

@model testForAutofill.Models.ViewModel

//Tried both DisplayFor and not.
    <tr>
        <th>Kunde:</th>
        <td>@Html.Model.allClients.Name</td>// This is where the error gets 
                                            // thrown.
    </tr>
    <tr>
        <th>Org.nr:</th>
        <td>@Html.DisplayFor(modelItem => clients.OrgNr)</td> 
    </tr>
    <tr>
    <th>Adresse:</th>
        <td>@Html.DisplayFor(modelItem => clients.Address1)</td>
        @if (clients.Address2 != null)
        {
        <td>@Html.DisplayFor(modelItem => clients.PostNr)</td>
        }
    </tr>

程序/網頁無法運行,並且出現錯誤消息:

“ CS1061:'HtmlHelper'不包含'Model'的定義,找不到可以接受類型為'HtmlHelper'的第一個參數的擴展方法'Model'(您是否缺少using指令或程序集引用?)”。

在部分視圖中的注釋行。

嘗試:在viewData上設置對象

內部控制器:

    ActionResult SomeView(){

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

    }

在cshtml中:

@using objectNamespace

@(((objectType)ViewData["object"]).name)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM