通过单击按钮从生成的部分视图中获取数据

时间:2016-07-11 00:49:18

标签: c# jquery ajax asp.net-mvc templates

我正在尝试编写一个页面,以允许用户为属性创建模板 检查。基本上该页面有一个TemplateCompany模型,它有一个模板区域的集合, 它有一个模板区域集合。当我单击添加区域按钮时,它会生成一个部分 包含区域文本框和复选框的视图。在该局部视图中,有一个按钮用于生成另一个要显示的局部视图 区域项文本框 - 用于处理用户将许多区域项添加到TemplateCompany对象。

当前设计的问题是将数据提交到后端 - 我没有真正的方法将区域项和areaItems与模板相关联

以下是我的代码:

 //Template class
    public partial class TemplateCompany
    {

        public string Title { get; set; }
        public string Description { get; set; }
        public string ColourIndicatorHex { get; set; }
        ...
        public virtual ICollection<TemplateCompanyArea> TemplateCompanyAreas { get; set; }
    }

创建模板html:

@model ITest.TEST.DAL.TemplateCompany
@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.Title)
    @Html.EditorFor(m => m.Title, "")

    <br /><br />
    @Html.LabelFor(m => m.Description)
    <br />
    @Html.TextAreaFor(m => m.Description, new { cols = 40, rows = 5 })
    <br /><br />
    @Html.LabelFor(m => m.ColourIndicatorHex)
    @Html.EditorFor(m => m.ColourIndicatorHex)


    @Html.LabelFor(m => m.UserTemplateRef)
    @Html.DisplayFor(m => m.UserTemplateRef)
    <br /><br />


    @Html.CheckBoxFor(m => m.IsMandatoryEnabledAsDefaultForAllItems)
    @Html.LabelFor(m => m.IsMandatoryEnabledAsDefaultForAllItems)
    <br /><br />

    @Html.CheckBoxFor(m => m.IsRepairModeEnabled)
    @Html.LabelFor(m => m.IsRepairModeEnabled)
    <br /><br />
    @Html.CheckBoxFor(m => m.IncludesFrontTitlePageInReport)
    @Html.LabelFor(m => m.IncludesFrontTitlePageInReport)
    <br /><br />

    //Is there occupancy details in report?

    @Html.CheckBoxFor(m => m.DisplayItemNameInActionsReport)
    @Html.LabelFor(m => m.DisplayItemNameInActionsReport)
    <br /><br />


    @Html.CheckBoxFor(m => m.DisplayPhotoCountInReport)
    @Html.LabelFor(m => m.DisplayPhotoCountInReport)
    <br /><br />

    @Html.LabelFor(m => m.ReportRepairsDisclaimerStatement)
    <br />
    @Html.TextAreaFor(m => m.ReportRepairsDisclaimerStatement, new { cols = 40, rows = 5})
    <br />
    @Html.LabelFor(m => m.ReportConfidentialityStatement)
    <br />
    @Html.TextAreaFor(m => m.ReportConfidentialityStatement, new { cols = 40, rows = 5 })
    <br />
    @Html.LabelFor(m => m.ReportDisclaimerStatement)
    <br />
    @Html.TextAreaFor(m => m.ReportDisclaimerStatement, new { cols = 40, rows = 5 })
    <br />

    <div id="addarea">
        @Ajax.ActionLink("Click to add area", "_AddArea", "Template", null, new AjaxOptions
{
    UpdateTargetId = "addarea",
    InsertionMode = InsertionMode.Replace,
    HttpMethod = "GET"
})
    </div>

<input type="submit" value="Save Template" />

}

添加区域html:

@model ITest.ITest.DAL.TemplateCompanyArea

<h2>Area</h2>

@Html.LabelFor(m => m.AreaName)<br />
@Html.TextAreaFor(m => m.AreaName, htmlAttributes: new {placeholder = "Enter area name here" })
<br />
@Html.LabelFor(m => m.AreaGuideline)<br />
@Html.TextAreaFor(m => m.AreaGuideline, htmlAttributes: new { placeholder = "Enter area guideline here" })

<div id="addareaitem">
    @Ajax.ActionLink("Click to add area item", "_AddAreaItem", "Template", null, new AjaxOptions
{
    UpdateTargetId = "addareaitem",
    InsertionMode = InsertionMode.InsertAfter,
    HttpMethod = "GET"
},new { id = "addareaitemlink" })

</div>

添加区域项html:

@model ITest.ITest.DAL.TemplateCompanyAreaItem

<h2>Area Item</h2>

@Html.LabelFor(m => m.AreaItemName)
@Html.TextAreaFor(m => m.AreaItemName, htmlAttributes: new { placeholder = "Enter area item name here" })

@Html.LabelFor(m => m.AreaItemGuideline)
@Html.TextAreaFor(m => m.AreaItemGuideline, htmlAttributes: new { placeholder = "Enter area item guideline here" })

@Html.CheckBoxFor(m => m.HasRepairs)
@Html.LabelFor(m => m.HasRepairs)


@Html.CheckBoxFor(m => m.IsMandatory)
@Html.LabelFor(m => m.IsMandatory)
<br />
@Ajax.ActionLink("Click to add area item", "_AddAreaItem", "Template", null, new AjaxOptions
{
    UpdateTargetId = "addareaitem",
    InsertionMode = InsertionMode.InsertAfter,
    HttpMethod = "GET"
})

除了TemplateArea和TemplateAreaItems的集合,然后在创建模板页面上使用EditorFor帮助程序之外,我还考虑过为公司使用ViewModel,它只包含模板公司信息。这个问题是它包含了集合类的所有信息 - 我不一定需要它们。我很高兴采用这样的方法,但我需要一个解决这个问题的方法,并在实现它时提供更多帮助

非常感谢任何有关开发此项目的良好方法的帮助。

提前致谢!

0 个答案:

没有答案