asp.net-mvc-2 – 带有数组/列表的ASP.NET MVC 2模型
发布时间:2020-10-19 17:40:49 所属栏目:asp.Net 来源:互联网
导读:我正在ASP.NET MVC中创建我的第一个站点,这是一种学习的方式.但我遇到了一个我无法找到解决方案的问题. 我希望我的用户能够创建附有歌曲和标签的专辑. 这可能是一个未指定数量的歌曲和标签.但必须至少有5首歌曲和2个标签. 但我无法弄清楚如何通过模型实现这一
我正在ASP.NET MVC中创建我的第一个站点,这是一种学习的方式.但我遇到了一个我无法找到解决方案的问题. 我希望我的用户能够创建附有歌曲和标签的专辑. 但我无法弄清楚如何通过模型实现这一目标,这是我能够走多远. public class AlbumCreateModel { [Required] [DisplayName("Title")] public string Title { get; set; } [DisplayName("Description")] public string Description { get; set; } [DisplayName("Publish")] public bool Public { get; set; } [DisplayName("Tags")] // Min 2 tags no max public List<AlbumTagModel> Tags { get; set; } [DisplayName("Songs")] // Min 5 songs no max public List<AlbumSongModel> Songs { get; set; } } public class AlbumTagModel { [Required] [DisplayName("Tag")] // Regex to test no spaces // min 2 characters // maximum 15 characters public string Tag { get; set; } } public class AlbumSongModel { [Required] [DisplayName("Title")] public string Title { get; set; } [Required] [DisplayName("Artist")] public string Artist { get; set; } [DisplayName("Description")] public string Description { get; set; } [DisplayName("Song Length")] public double Length { get; set; } [DisplayName("Year")] public int Description { get; set; } } 视图: <%@ Page Title="" Language="C#" MasterPageFile="~/App/Views/Shared/MasterPage.Master" Inherits="System.Web.Mvc.ViewPage<album.App.Models.AlbumCreateModel>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Create </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm()) { %> <%: Html.ValidationSummary(true,"Committing the album was unsuccessful. Please correct the errors and try again.")%> <div> <fieldset> <legend>Album Information</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Title)%> <%: Html.ValidationMessageFor(m => m.Title)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Description) %> </div> <div class="editor-field"> <%: Html.TextAreaFor(m => m.Description)%> <%: Html.ValidationMessageFor(m => m.Description)%> </div> <!-- Tags here --> <!-- Songs here --> <p> <input type="submit" value="Commit" /> </p> </fieldset> </div> <% } %> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="MetaData" runat="server"> </asp:Content> 可能的解决方案: 模型: public class PlaylistModel { [Required] [DisplayName("Title")] public string Title { get; set; } [DisplayName("Description")] public string Description { get; set; } [DisplayName("Publish")] public bool Public { get; set; } [DisplayName("Tags")] [ListCount(Min = 2)] // Min 2 tags no max public List<PlaylistTagModel> Tags { get; set; } [DisplayName("Songs")] [ListCount(Min = 5)] public List<PlaylistSongModel> Songs { get; set; } } public class PlaylistTagModel { [Required] [DisplayName("Tag")] // Regex to test no spaces // min 2 characters // maximum 15 characters public string Tag { get; set; } } public class PlaylistSongModel { [Required] [DisplayName("Title")] public string Title { get; set; } [Required] [DisplayName("Artist")] public string Artist { get; set; } [DisplayName("Description")] public string Description { get; set; } [DisplayName("Song Length")] public int Length { get; set; } [DisplayName("Year")] public int Year { get; set; } } 视图: <%@ Page Title="" Language="C#" MasterPageFile="~/App/Views/Shared/MasterPage.Master" Inherits="System.Web.Mvc.ViewPage<playlist.App.Models.PlaylistModel>" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Create </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <% using (Html.BeginForm()) { %> <%: Html.ValidationSummary(true,"Committing the playlist was unsuccessful. Please correct the errors and try again.")%> <div> <fieldset> <legend>Playlist Information</legend> <div class="editor-label"> <%: Html.LabelFor(m => m.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Title)%> <%: Html.ValidationMessageFor(m => m.Title)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Description) %> </div> <div class="editor-field"> <%: Html.TextAreaFor(m => m.Description)%> <%: Html.ValidationMessageFor(m => m.Description)%> </div> <br /> <%: Html.ValidationMessageFor(m => m.Tags)%> <div class="editor-label"> <%: Html.LabelFor(m => m.Tags)%> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Tags) %> <%: Html.Editor("Tags[" + (Model == null ? 0 : Model.Tags.Count) + "]","PlaylistTagModel")%> </div> <br /> <%: Html.ValidationMessageFor(m => m.Songs)%> <div class="editor-label"> <%: Html.LabelFor(m => m.Songs)%> </div> <div class="editor-field"> <%: Html.EditorFor(m => m.Songs)%> <%: Html.Editor("Songs[" + (Model == null ? 0 : Model.Songs.Count) + "]","PlaylistSongModel")%> </div> <p> <input type="submit" value="Commit" /> </p> </fieldset> </div> <% } %> </asp:Content> <asp:Content ID="Content3" ContentPlaceHolderID="MetaData" runat="server"> </asp:Content> 这两个模板: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<playlist.App.Models.PlaylistSongModel>" %> <fieldset> <legend>Song Information</legend> <%: Html.ValidationSummary(true,"Committing this song was unsuccessful. Please correct the errors and try again.")%> <div class="editor-label"> <%: Html.LabelFor(m => m.Title) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Title)%> <%: Html.ValidationMessageFor(m => m.Title)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Artist)%> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Artist)%> <%: Html.ValidationMessageFor(m => m.Artist)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Description)%> </div> <div class="editor-field"> <%: Html.TextAreaFor(m => m.Description)%> <%: Html.ValidationMessageFor(m => m.Description)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Length)%> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Length)%> <%: Html.ValidationMessageFor(m => m.Length)%> </div> <div class="editor-label"> <%: Html.LabelFor(m => m.Year)%> </div> <div class="editor-field"> <%: Html.TextBoxFor(m => m.Year)%> <%: Html.ValidationMessageFor(m => m.Year)%> </div> </fieldset> (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 遭遇Asp.Net长文件名下载的问题和解决办法
- asp.net-mvc – 在OS X 10.7.4上的MonoDevelop中构建MVC4项
- asp.net – 将Eval参数从ASPX文件传递给JavaScript函数
- asp.net – 如何使用正则表达式将百分比验证到两位小数?
- 编辑并在ASP.NET Web项目中继续
- asp.net-mvc – SelectListItem中的Selected属性永远不会起
- .NET API 接口数据传输加密最佳实践记录
- asp.net – 将JSON数据解析为.NET对象的最佳方式
- asp.net-mvc – 程序集使用System.Web.Http 5.1,它比引用的
- asp.net-mvc – 如何将Model字段值传递给javascript变量?
推荐文章
站长推荐
- 用C#实现pdf文件的完整性验证
- asp.net编程实现删除文件夹及文件夹下文件的方法
- .net – Viewstate隐藏字段如此之大,一切都会崩溃
- asp.net-mvc – 为什么在我的ASP MVC4应用程序中
- asp.net-mvc – MVC3验证与实体框架模型/数据库首
- asp.net-mvc – asp.net MVC antiorgerytoken异常
- 详解Asp.net Core 使用Redis存储Session
- LoginView中的ASP.NET LoginStatus不会触发Loggi
- ASP.NET(AJAX+JSON)实现对象调用
- asp.net – 查询字符串参数使我的应用程序面临风
热点阅读