我想学习ASP.NET MVC 3,从Web窗体背景的。 我试图找出这将是实现我想要什么的MVC的方式,和实际困难的是,我不知道到google一下!
我不能让我的周围头是如何与更复杂的模型工作。 所有的asp.net网站解决办法相当简单的数据对象的教程,并因此而简单的编辑与他们来管理数据。
想象一下,一个假设党的预订应用模型: -
public class Party
{
public string PartyName {get;set;}
public DateTime PartyDate {get; set; }
public ICollection<Guest> Guests {get; set;}
}
public class Guest
{
public string Name {get; set;}
public string EmailAddress {get; set;}
}
这里的关键是客人的集合。
我想了解如何实现的,就是如何实现控制器+视图这将让我创造一个党,也同时增加新的客人,在一个单一页面(和最好与来宾添加/删除功能在AJAX -page)。
在asp.net web表单类似的应用程序,它会直截了当地把为客人功能在一个UpdatePanel。 但我不知道如何去在MVC实现这一点。
如果任何人有任何提示,指针或链接到讨论类似主题的文章,我会很感激,
谢谢
滑
使用jQuery AJAX来处理增加了许多客人。
1)与模型弹出当你点击添加按钮客户,调用,它返回的游客为米的模型对话框的操作方法(jQuery UI的对话是在这里使用)一个选项。 使用AJAX调用后保存数据。 一个成功的情况下,新的客户数据追加到客人的主要形式列表或只使用jQuery负载重新加载部分
2)页内广告素材添加当您单击Add按钮客人,在主窗体本身,显示的形式(您可以动态地创建输入框和保存各种方式从JavaScript按钮)。 保存使用jQuery的阿贾克斯后的数据。 发送数据作为json.As只要参数名与视图模型的属性名相匹配,你的操作方法可以接受数据
你的HTML页面
<a href="#" id="addNew"> Add Guest</a>
<div id="divForm" style="display:none">
<input type="text" id="txtName" />
<input type="text" id="txtEmail" />
<input type="button" id="btnSaveGuest" value="Save"/>
</div>
<ul>
<div id="divGuests"></div>
在你的脚本
$(function(){
//Show the hidden form
$("#addNew").click(function(){
$("#divForm").fadeIn(300);
});
//Save the new guest details
$("#btnSaveGuest").click(function() {
var name=$("#txtName").val();
var email=$("#txtEmail").val();
$.ajax({
url: '@Url.Action("SaveGuest","Guest")',
data: {Name: name, EmailAddress :email},
success: function(data) {
if(data=="true")
{
//Saved successfully.May be append to list of Guest
$("#divGuests").append("<p>"+name+"</p>");
}
else
{
//Error. Show msg to user
}
}
});
});
});
动作方法保存
[HttpPost]
public ActionResult SaveGuest(Guest objGuest)
{
try
{
// read the objGuest property values and Save to db
return "true";
}
catch(Exception e)
{
//Log error
return "false";
}
}
下面是一个示例应用: http://jsfiddle.net/Qzk3F/16/ (一些值在例如硬编码)
有许多方法可以做到这一点,但考虑的部分是底层数据库布局。 在创建视图中,可以强烈它输入到党的对象,然后通过客人的收集,你将有机会获得来宾的属性。 然后加入创建客人党模型的方法。 或者你可以有党和来宾有或没有收集不同的模型,然后创建一个捆绑的一方给客人一个视图模型。 然后强类型视图到视图模型。
有可能是更好或“更正确”的方式来做到这一点。
使用第三容器模型
public class BookingModel
{
public Party PartyModel { get; set; }
public Guest GuestModel { get;set; }
}
然后BookingModel绑定到视图,您就可以访问这两个PartyModel和GuestModel
编辑:哎呀只是再次阅读问题。
public class BookingModel
{
public Party PartyModel { get; set; }
}
然后在你的BookingController有一个方法:
public ActionResult AddGuest(string name)
{
BookingModel.Guests.Add(new Guest() { Name=name });
}
显然,你需要先BookingModel参考。 如果你愿意,还可以创建guest虚拟机的PartialView或者只是使用一些“绑定”输入。