代码之家  ›  专栏  ›  技术社区  ›  Woody1193 Nimmi Rashinika

未显示Ext.NET部分视图

  •  0
  • Woody1193 Nimmi Rashinika  · 技术社区  · 6 年前

    @model MyModel
    @{
        var x = Html.X();
    }
    
    @(x.Panel()
        .Layout(LayoutType.Fit)
        .Items(i =>
        {
            i.Add(new GridPanel
            {
                Region = Region.West,
                Layout = LayoutType.Fit.ToString(),
                Loader = x.ComponentLoader()
                    .Url(Url.Action("ListSubData", "My"))
                    .Mode(LoadMode.Script)
                    .Params(new { id = Model.Id })
            });
        }))
    

    我的子视图如下所示:

    @model int
    @{
        var x = Html.X();
    }
    
    @(x.Store(
        x.Store()
            .ID("MyDataStore")
            .AutoLoad(true)
            .Proxy(
                x.AjaxProxy()
                    .Url(Url.Action("GetData", "My", new { id = Model }))
                    .Reader(x.JsonReader().RootProperty("data")))
            .Model(
                x.Model()
                    .Fields(
                        x.ModelField()
                            .Name("Description")
                            .Type(ModelFieldType.String),
                        x.ModelField()
                            .Name("Category")
                            .Type(ModelFieldType.String),
                        x.ModelField()
                            .Name("Id")
                            .Type(ModelFieldType.Int)))))
    
    @(x.GridPanel()
        .ID("MyPanel")
        .StoreID("MyDataStore")
        .ColumnModel(
            x.Column()
                .DataIndex("Description")
                .Text("Name"),
            x.Column()
                .DataIndex("Category")
                .Text("Category")))
    

    我的控制器是这样的:

    public class MyController : Controller
    {
        private readonly IStoreModelFactory _myStoreModelFactory;
    
        public DashboardController(IStoreModelFactory factory)
        {
            _myStoreModelFactory= factory;
        }
    
        public ActionResult Index(MyStoreModel model)
        {
            var viewModel = new MyViewModel
            {
                Name = model.Name,
                Id = model.Id
            };
    
            return View(viewModel);
        }
    
        public Ext.Net.MVC.PartialViewResult ListSubData(int id)
        {
            return new Ext.Net.MVC.PartialViewResult
            {
                RenderMode = RenderMode.AddTo,
                Model = id,
                ContainerId = string.Format("ListSubData_{0}", id),
                WrapByScriptTag = false
            };
        }
    
        public StoreResult GetData(int id)
        {
            var models = _myStoreModelFactory.GetStoreResults(id);
            return new StoreResult(models);
        }
    

    我是在效仿 here 但我不确定我做得对不对。看起来他们正在将组件直接插入到他们创建的面板上,并将其插入到 Items 我正在创建一个 GridPanel 但我不知道在这种情况下该怎么做。我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Peska    6 年前

    你这里有两个问题。首先是这一行:

    ContainerId = string.Format("ListSubData_{0}", id)
    

    页面上需要具有此id的元素,以便可以将内容呈现到其中。因此,基本上,您需要将此方法更改为:

    public Ext.Net.MVC.PartialViewResult ListSubData(int id)
    {
        return new Ext.Net.MVC.PartialViewResult
        {
            RenderMode = RenderMode.AddTo,
            Model = id,
            ContainerId = "MyContainerId",
            WrapByScriptTag = false
        };
    }
    

    然后将主视图更改为:

    @(x.Panel()
        .ID("MyContainerId")
        .Layout(LayoutType.Fit)
        .Items(i =>
        <!-- rest of the code -->
    

    第二个问题是局部视图上的存储。而不是使用 .StoreID("MyDataStore") 必须将其移动到网格面板中,如下所示:

    @(x.GridPanel()
        .ID("MyPanel")
        .Store(
            x.Store()
                .ID("MyDataStore")
                .AutoLoad(true)
                <!-- rest of the code -->