c# - 查看有很多组件。多个模型对象?

标签 c# .net asp.net-mvc asp.net-mvc-2

我正在开发一个小型 MVC 应用程序。

问题:我有一个 View 页面,其中有一个用于添加事件的表单、一个用于搜索事件的表单和一个事件列表。

将组件放置在单个 View 中并不是什么大问题,但我需要将它们放置在一个页面中。我想要一个位于事件列表上方的永久表格。

问题是我不知道选择什么作为 View 的模型对象。如果我选择事件列表,它可以与列表完美配合,但不能与表单完美配合。如果我选择适合表单的特定模型对象,则列表就会出现问题。

使用表单、列表等处理此类 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 View 控件:

<%@ 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" />
            <% } %>

最佳答案

我强烈建议您不要直接使用域模型中的模型对象作为 View 类型,而是应该创建一个自定义 EventViewModel 并保留与您拥有的每个部分 View 相对应的三个不同对象。

关于c# - 查看有很多组件。多个模型对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5607160/

相关文章:

c# - 在 richtextbox 中突出显示单词

c# - VSTO 插件表单关闭处理程序

c# - Lambda 表达式定义(学究)?

javascript - 使用 Razor,如何将 bool 值呈现为 JavaScript 变量?

asp.net - System.Web.Webpages.Html 与 System.Web.Mvc 命名空间中的 HtmlHelper 类

c# - Foreach 遍历所有 listView 项目

c# - 如何获取鼠标滚轮状态?

.net - 在同一应用程序中的CodeFirst和EDMX

c# - Html Helper 可能缓存输入值

asp.net-mvc - 我的 Razor 文件中的内联 javascript - 我可以从外部文件获取此 "included"