.Net核心剃刀页面-具有多个对象的局部视图

时间:2020-01-22 12:11:22

标签: asp.net-core razor-pages

.Net Core,EF Core和Razor页面是我的新手。

我有一个使用张贴到剃须刀页面的表格。页面模型具有三个绑定属性,其中两个是EF模型(我使用继承仅绑定安全属性),一个只是字符串:

 [BindProperty]
 public Models.BaseEvent _Event { get; set; }

 [BindProperty]
 [Display(Name = "Venue Search")]
 public string _VenueSearch { get; set; }

 [BindProperty]
 public Models.BaseVenue _Venue { get; set; }

然后我有了一个用于创建事件的表格。添加有关事件的信息时,他们可以使用场所搜索来选择现有场所,也可以添加一个新场所。 _VenueSearch只能在出现错误时自动重新填充表格。我使用jquery在字段上执行自动填充。

但是,我试图将表单分成部分,但是我不知道如何传递_Event,_VenueSearch和_Venue?

<form method="post">
            <input id="venueid" type="hidden" asp-for="_Venue.VenueID" />
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="_Event.Name" class="control-label"></label>
                <input asp-for="_Event.Name" class="form-control" />
                <span asp-validation-for="_Event.Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Event.StartDateTime" class="control-label"></label>
                <input asp-for="_Event.StartDateTime" class="form-control" />
                <span asp-validation-for="_Event.StartDateTime" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Event.EndDateTime" class="control-label"></label>
                <input asp-for="_Event.EndDateTime" class="form-control" />
                <span asp-validation-for="_Event.EndDateTime" class="text-danger"></span>
            </div>
            <hr />
            <div id="search-container" class="form-group">
                <label asp-for="_VenueSearch" class="control-label"></label>
                <input id="venue" asp-for="_VenueSearch" class="form-control" />
                <span asp-validation-for="_VenueSearch" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Venue.Name" class="control-label">Venue Name</label>
                <input id="venue-name" asp-for="_Venue.Name" class="form-control" />
                <span asp-validation-for="_Venue.Name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Venue.Address" class="control-label">Venue Address</label>
                <input id="venue-address" asp-for="_Venue.Address" class="form-control" />
                <span asp-validation-for="_Venue.Address" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Venue.City" class="control-label">Venue City</label>
                <input id="venue-city" asp-for="_Venue.City" class="form-control" />
                <span asp-validation-for="_Venue.City" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Venue.PostCode" class="control-label">Venue Postcode</label>
                <input id="venue-postcode" asp-for="_Venue.PostCode" class="form-control" />
                <span asp-validation-for="_Venue.PostCode" class="text-danger"></span>
            </div>
            <hr />
            <div class="form-group">
                <label asp-for="_Event.Description" class="control-label"></label>
                <textarea asp-for="_Event.Description" class="form-control"></textarea>
                <span asp-validation-for="_Event.Description" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="_Event.AgeRestriction" class="control-label"></label>
                <input asp-for="_Event.AgeRestriction" class="form-control" />
                <span asp-validation-for="_Event.AgeRestriction" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create Event" class="btn btn-primary" />
            </div>
        </form>

如何将其部分放置,以便我仍然可以访问这两个模型和字符串(_Event,_Venue和_VenueSearch。我没有包括javascript自动完成代码,因为它与本文无关。

我想使用部分页面,因为我的创建/编辑页面都将使用相同的表单,所以我看不到重复的地方。

在此先感谢您的帮助

马特

1 个答案:

答案 0 :(得分:0)

您可以创建一个视图模型并包括从数据库查询的对象,在加载部分视图时,将视图模型直接传递到部分视图:

@await Html.PartialAsync("viewName", model:Model.YourModel)