视图与许多组件.多模型对象
本文关键字:模型 对象 组件 许多 视图 | 更新日期: 2023-09-27 17:49:39
我正在开发一个小MVC应用程序。
问题:我有一个视图页面,其中有一个表单来添加事件,一个表单来搜索事件和事件列表。
将组件放在单个视图中不是什么大问题,但我需要将它们放在一个页面中。我想要一个永久的形式上面的事件列表。
问题是我不知道选择什么作为视图的模型对象。如果我选择一个事件列表,它与列表完美地工作,但不与表单。如果我选择一个适合表单的特定模型对象,则列表存在问题。
处理表单、列表等视图的最佳方法是什么?
?That's my View:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="ViewPage<EventPlaza.Web.Models.EventsListViewModel>" %>
<%@ Import Namespace="EventPlaza.Storage.Model" %>
<%@ Import Namespace="EventPlaza.Web.HtmlHelpers" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="EventControlsContainer">
<h3><a href="#">Add Event Link</a></h3>
<div>
<% Html.RenderPartial("AddEvent", new AddEventModel()); %>
</div>
<h3><a href="#">Search for Events</a></h3>
<div>
<form>
Place:
<input id="elementID" name="elementID" type="text" class="inputSearch" />
Date:
<input id="datepicker" name="elementID2" type="text" class="inputSearch" />
<input id="addEvent" type="submit" value="Find Events" />
</form>
</div>
</div>
<% foreach(var product in Model.Events) { %>
<% Html.RenderPartial("EventSummary", product); %>
<% } %>
<div class="pager">
<%: Html.PageLinks(Model.PagingInfo,
x => Url.Action("List", new {page=x})) %>
</div>
</asp:Content>
这是AddEvent视图控件:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<EventPlaza.Storage.Model.AddEventModel>"%>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("AddEvent", "Event", FormMethod.Post)) { %>
Event Link:
<%: Html.TextBoxFor(x => x.EventLink) %>
Event Name:
<%: Html.TextBoxFor(x => x.EventName) %><br />
Place:
<%: Html.TextBoxFor(x => x.Place) %>
Starting Date:
<%: Html.TextBoxFor(x => x.StartingDate) %> <br />
End Date:
<%: Html.TextBoxFor(x => x.EndDate) %>
<input id="Submit" type="submit" value="Add Event" />
<% } %>
我强烈建议你不应该直接使用域模型中的Model对象作为视图的类型,相反,你应该创建一个自定义的EventViewModel,并保留三个不同的对象对应于你拥有的每个部分视图