0

まず、私はその点で少し新しいことに注意してください。2 つのモデル (2 つのテーブル) からの列を使用して Webgrid を作成する方法を知りたいです。

私はそのような2つのモデルを持っています: Model1:

public int Id { get; set; }
public string Name { get; set; }

モデル 2:

public int Id { get; set; }
public int Model1_Id { get; set; }
public string Level { get; set; }
public string AdditionalInfo { get; set; }
public string Note { get; set; }

コントローラーでデータを処理し、ビューに送信します。

...
List<Model2> data = new List<Model2>();
...
return View(data)

今問題を開始します。ビューでは、モデルから Webgrid を作成しています。問題が発生すると、列の名前はプロパティ名と同じでなければなりません。そうしないと、失敗します。

@model IEnumerable<Model2>

<div class="class-name">
    @grid.GetHtml(columns: new [] {
    grid.Column("Level"),
    grid.Column("AdditionalInfo", header: "Additional info"),
    grid.Column("Note")
    }, tableStyle: "some-name")
</div>

それはすべて問題ありませんが、そのグリッドにも Model1 の名前が必要で、値は Model1_Id に依存します。

grid.Column で新しい列を追加しようとすると、落ちます。

2 番目のモデル (最初の行の後に) を追加すると、「ファイルには 1 つの「モデル」ステートメントのみが許可されます」と書き込まれます。

私が試したものはすべて落ちました。

私はグーグルで仕事をしようとしましたが、数時間後に皆さんに尋ねたいと思います. ありがとうございました

4

2 に答える 2

1

両方のモデルでViewModelを作成できます

public class MyViewModel
{
    public Model1 Model1Data { get; set; }
    public List<Model2> Model2List { get; set; }
}

In Controller

    MyViewModel model = new MyViewModel();
    model.Model2List = new List<Model2>()
    model.Model1Data = new Model1() 

あなたの見解では、

@model MyViewModel 
于 2013-08-27T14:17:56.533 に答える
0

これを試して、

それはほんの一例です:

モデル

  public class EmployeeDetailsModel
    {
        public string EnteredValue { get; set; }
        public int EmployeeId { get; set; }
    }
  public class SampleModel
    {
        public int inx { get; set; }
        public bool studentclass { get; set; }
        public string SampleDescription { get; set; }
        public string SampleCode { get; set; }
        public string SampleItems { get; set; }
        private EmployeeDetailsModel _employee = new EmployeeDetailsModel();
        public EmployeeDetailsModel employee { get { return _employee; } set { _employee = value; } }
    }

コントローラ

 public ActionResult IndexJquery()
        {
            ViewBag.RegisterItems = GetSamples();
            return View();
        }
  public IEnumerable<SampleModel> GetSamples()
        {
            List<SampleModel> sampleAdd = new List<SampleModel>();
            SampleModel s12 = new SampleModel();
            s12.inx = 1;
            s12.SampleCode = "123se";
            s12.SampleDescription = "GOOD";
            s12.SampleItems = "newone";
            s12.employee.EmployeeId = 1;
            s12.employee.EnteredValue = "jaimin";


            SampleModel s2 = new SampleModel();
            s12.inx = 2;
            s2.SampleCode = "234se";
            s2.SampleDescription = "Average";
            s2.SampleItems = "oldone";
            s2.employee.EmployeeId = 2;
            s2.employee.EnteredValue = "jaimin2";


            sampleAdd.Add(s12);
            sampleAdd.Add(s2);

            return sampleAdd;
        }

意見

 <div>
        @{
            var grid = new WebGrid(ViewBag.RegisterItems);
            @grid.GetHtml(
                 alternatingRowStyle: "alt",
                  columns: grid.Columns(
                    grid.Column("SampleCode"),
                    grid.Column("SampleDescription"),
                    grid.Column("SampleItems"),
                    grid.Column("employee.EmployeeId", header: "EmployeeId"),
                    grid.Column("employee.EnteredValue", header: "EnteredValue")
                 ));
        }
    </div>
于 2013-08-27T12:56:18.250 に答える