C# 试图理解asp.net Web表单(数据绑定)的MVC人员
我参与了这个使用Asp.net Webforms的项目 我试图理解数据绑定是如何工作的 假设我输入有关用户注册的表单数据。当我提交时,我能以某种方式将输入绑定到模型吗 我读过关于绑定到可以是XML的数据集的内容。我需要将其反序列化为某种实体吗C# 试图理解asp.net Web表单(数据绑定)的MVC人员,c#,webforms,C#,Webforms,我参与了这个使用Asp.net Webforms的项目 我试图理解数据绑定是如何工作的 假设我输入有关用户注册的表单数据。当我提交时,我能以某种方式将输入绑定到模型吗 我读过关于绑定到可以是XML的数据集的内容。我需要将其反序列化为某种实体吗 请提供有关这方面的任何资源。如果可以,请避免使用数据集。改用强类型对象。如果您确实使用了数据集,那么它们已经很好地序列化了。下面是一个简单的例子,可以帮助您上路。这将从文本框中提取值,并将列表视图绑定到集合。 我希望这有帮助 步骤1:创建对象和视图模型
请提供有关这方面的任何资源。如果可以,请避免使用数据集。改用强类型对象。如果您确实使用了数据集,那么它们已经很好地序列化了。下面是一个简单的例子,可以帮助您上路。这将从文本框中提取值,并将列表视图绑定到集合。 我希望这有帮助 步骤1:创建对象和视图模型
[Serializable]
public class Person
{
public String FirstName { get; set; }
public String LastName { get; set; }
public Person(String FirstName, String LastName)
{
this.FirstName = FirstName;
this.LastName = LastName;
}
public Person()
: this(String.Empty, String.Empty)
{
}
}
[Serializable]
public class ViewModelBase
{
}
[Serializable]
public class SomePageViewModel : ViewModelBase
{
private Person currentperson;
public Person CurrentPerson
{
get
{
if (currentperson == null)
{
currentperson = new Person();
}
return currentperson;
}
set
{
currentperson = value;
}
}
private List<Person> persons;
public List<Person> Persons
{
get
{
if (persons == null)
{
persons = new List<Person>();
}
return persons;
}
set
{
persons = value;
}
}
public SomePageViewModel()
{
}
public void RegisterPerson(String FirstName, String LastName)
{
Persons.Add(new Person(FirstName,LastName));
}
public void GetPersons()
{
/*Get Persons from database*/
}
}
Northrup和Snell为MCTS 70-515编写的微软新闻书怎么样?他们很有趣,很有说教性。“使用Microsoft.Net Framework开发Web应用程序”。是的,您可以创建一个模型并将其存储在ViewState中,然后将其数据绑定到前端(我说是前端代码)。给我一点时间,我会找到我的旧代码,已经好几年了。我认为你不需要在这里使用session,viewstate可能更合适。Rod,你是对的,session是不需要的,viewstate可以保存数据,但是你必须记住,viewstate在每篇文章中都会被序列化/反序列化。您也不能使用viewstate在多个页面之间共享数据。也就是说,会话存储确实有它自己的缺点。这实际上取决于当时的开发人员。是的,您必须在每次请求时重新加载所需的所有数据。。。糟透了,我知道,这是一个可怕的框架。
/// <summary>
/// Lazy initialized and persisted in session
/// </summary>
public SomePageViewModel ViewModel
{
get
{
if (Session["SomePageViewModel"] == null)
{
Session.Add("SomePageViewModel", new SomePageViewModel());
}
return Session["SomePageViewModel"] as SomePageViewModel;
}
set
{
if (value == null)
{
if (Session["SomePageViewModel"] != null)
{
Session.Remove("SomePageViewModel");
}
}
else
{
Session["SomePageViewModel"] = value;
}
}
}
<asp:TextBox runat="server" ID="txtFirstName" ValidationGroup="vgrpRegister" />
<asp:TextBox runat="server" ID="txtLastName" ValidationGroup="vgrpRegister" />
<asp:Button runat="server" ID="btnRegister" Text="Register" ValidationGroup="vgrpRegister"/>
<asp:ListView runat="server" ID="lvPersons" ItemPlaceholderID="phPersons" DataSource='<%#ViewModel.Persons%>'>
<LayoutTemplate>
<table id="tblPersons" border="1">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat="server" ID="phPersons"></asp:PlaceHolder>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("FirstName") %></td>
<td><%#Eval("LastName") %></td>
</tr>
</ItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
this.btnRegister.Click += new EventHandler(btnRegister_Click);
}
void btnRegister_Click(object sender, EventArgs e)
{
this.ViewModel.RegisterPerson(txtFirstName.Text, txtLastName.Text);
this.lvPersons.DataBind();
}