积极答复者
求MVC 动态表单例子或开发思路

问题
-
/*
声明:动态表单的定义为,页面内的控件,表单数量都是根据数据库内的数据来生成的.
在MVC下需要能够正确View出来,提交时能够正确收集相关表单数据.还有一个就是数据验证.冒似MVC下菜菜的我需要大家的帮忙!从中学习进步!
*/
我当前是用WebApp与WebSite作开发.
当我看到MVC的友好化URL,可测试性时,我心动了.买了一本ASP.NET MVC 1.0 高级编程的书来学.
但是随着逐渐往下看时,就无法理解了.
当我们在webform方式下做开发时,做动态表单都很容易,但是在MVC下.我无法理解及忍受在.aspx下写asp时代的面条式代码.
希望有MVC动态表单制作经验的同学们拉我一把,给个学习连接或者samples都行~
也希望其他正在转型的朋友们关注一下这个话题.毕竟搜索引擎找到的结果看得我都是云里雾里的.
/*
在这里虚拟一个业务场景
就拿平常的购物车来说吧.
每次在订单提交前,客户都可以对每个货物设置一个数量
由于每张订单的物品清单都是不同的.所以在Web form下可以很容易地用GirdView或者其他控件去解决.
问在MVC下,怎么正确地从控制器那里获取到订单列表及客户修改过后的每个物品数量?
才接触不久.书上内容幅度有限!
*/
答案
-
你无法忍受那些写法,那你就无法理解这种模式了,最基本的连Model也没有理解到。
这个问题其实很容易解决,就是用Model。
Please mark the post answered your question as the answer, and vote other helpful posts, so they will appear differently to other users for the same problem. 请将解决实际问题的帖子标记为“答案”,并给其他有帮助的帖子投票,这样其他人有同样问题的时候可以快速找到解决方案。谢谢!- 已标记为答案 BoberSongModerator 2010年7月23日 5:38
-
你好:
首先你可以根据你的需求在控制器中取得数据并绑定到页面。也就是说每个页面Load的时候都有一个action对应。如果需要后台数据就在该action中获取并在页面上绑定。这样就第一次呈现给用户了。你可以使用ViewData 等方式进行值传递。
希望可以帮到你。
- 已标记为答案 BoberSongModerator 2010年7月23日 5:38
全部回复
-
你无法忍受那些写法,那你就无法理解这种模式了,最基本的连Model也没有理解到。
这个问题其实很容易解决,就是用Model。
Please mark the post answered your question as the answer, and vote other helpful posts, so they will appear differently to other users for the same problem. 请将解决实际问题的帖子标记为“答案”,并给其他有帮助的帖子投票,这样其他人有同样问题的时候可以快速找到解决方案。谢谢!- 已标记为答案 BoberSongModerator 2010年7月23日 5:38
-
你好:
首先你可以根据你的需求在控制器中取得数据并绑定到页面。也就是说每个页面Load的时候都有一个action对应。如果需要后台数据就在该action中获取并在页面上绑定。这样就第一次呈现给用户了。你可以使用ViewData 等方式进行值传递。
希望可以帮到你。
- 已标记为答案 BoberSongModerator 2010年7月23日 5:38
-
你好我对MVC基础已经有一定认识了
现在我贴代码.
//model namespace MvcApplication1.Models { public class SimpleModels { public string Name { get; set; } public string Value { get; set; } } } //view <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<MvcApplication1.Models.SimpleModels>>" %> <asp:Content ID="aboutTitle" ContentPlaceHolderID="TitleContent" runat="server"> About Us </asp:Content> <asp:Content ID="aboutContent" ContentPlaceHolderID="MainContent" runat="server"> <h2>About</h2> <p> Put content here. <% using (Html.BeginForm()) { %> <% foreach (var item in Model) { %> <%= Html.TextBox(item.Name, item.Value) %><br /> <% } %> <input type="submit" value="提交" /> <%} %> </p> </asp:Content> //controller [HandleError] public class HomeController : Controller { public ActionResult About() { List<SimpleModels> models = new List<SimpleModels>(); SimpleModels m1 = new SimpleModels() { Name = "name1", Value = "value1" }; SimpleModels m2 = new SimpleModels() { Name = "name2", Value = "value2" }; SimpleModels m3 = new SimpleModels() { Name = "name3", Value = "value3" }; models.Add(m1); models.Add(m2); models.Add(m3); ViewData["model"] = models; //按照[BoberSong版主]的方法做 return View(models); } [HttpPost] public ActionResult About(List<SimpleModels> models, FormCollection collection) { //这里为o为null获取不了.所以[BoberSong版主]的方法有问题 object o = ViewData["model"]; //这里可以看得到Request.Form有值传入. object o2 = this; models[0].Value = "111"; //model为啥老为null return View(models); } } }