【问题标题】:Help with asp.net mvc EditorFor帮助 asp.net mvc EditorFor
【发布时间】:2011-02-23 05:05:02
【问题描述】:

我有一个项目模型和一个任务模型。

在我的控制器中说我有

public ActionResult Create()
{
   Project p = new Project();
   Task t1=new Task();
   Task t2=new Task();
   Task t3=new Task();
   p.tasks.Add(t1);
   p.tasks.Add(t2);
   p.tasks.Add(t3);
}

在我的项目强类型视图中,我有

Html.EditorForModel()

我怎样才能让它显示项目和每个任务的字段?

请帮忙!

-------为了澄清而添加

public ActionResult Create(Guid LicenseId)
        {
            License license;
            if (!User.IsInRole("admin"))
                license = _service.GetContributor(User.Identity.Name).Licenses.Single(l => l.Id == LicenseId);
            else
                license = _service.GetLicenseById(LicenseId);
            if (license == null)
                return RedirectToAction("Index", "Home");
            IncomeDeclaration i = new IncomeDeclaration();
            foreach(var ecoActLicense in license.EconomicActivitiyLicenses)
            {
                EconomicActivityIncomeDeclaration ecoActIncDec = new EconomicActivityIncomeDeclaration();
                ecoActIncDec.ActivityTax = 20;
                ecoActIncDec.EconomicActivityId = ecoActLicense.EconomicActivityId;
                i.EconomicActivityIncomeDeclarations.Add(ecoActIncDec);
            }
            return View(i);
        }

这段代码是我首先将 EconomicActivityIncomeDeclarations 与 IncomeDeclaration 关联起来的地方。

在视图中,我只是有收入声明的强类型

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>IncomeDeclaration</legend>

        @Html.EditorForModel()
        @Html.EditorFor(m =>m.EconomicActivityIncomeDeclarations)
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

【问题讨论】:

    标签: asp.net-mvc templates editortemplates mvc-editor-templates


    【解决方案1】:

    您的视图应该作为模型强类型化到项目中,如果是,它应该主要是自动工作。

    Project 上的公共属性(如果它是强类型视图的指定模型)将被发现并带有标签和文本框以供编辑。

    如果您想在编辑器中显示作为集合的属性,您可以执行以下操作:

    Html.EditorForModel(model => model.tasks)
    

    如有必要,您可以为您的收藏项添加 EditorTemplate:Views--&gt;Shared--&gt;EditorTemplates--&gt;Task.cshtml

    【讨论】:

    • 它显示了项目的字段,但没有显示每个任务的字段!
    • 啊,所以需要指定任务集合...给我几分钟..
    • 所以我不需要做任何类型的foreach?
    • 不,EditorForModel 应该弄清楚...我已经为集合中的项目使用了自定义视图,但我认为不需要自定义视图,我没有'不必枚举集合。
    • 奇怪..我无法让它工作......在为集合添加编辑器后,它只显示一些 GUID 而不是显示文本框......我不得不使用 EditorFor 而不是 EditorForModel btw
    猜你喜欢
    • 2011-01-31
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多