我正在使用ASP.NET MVC和Entity Framework。我要将一个复杂的实体传递给clent端,让用户修改它,并将其发送回控制器。但我不知道该怎么做,以及客户端实体是否会因为与对象上下文分离而失去EF的关系跟踪。从clent侧回发复杂对象
任何想法?提前致谢!
我正在使用ASP.NET MVC和Entity Framework。我要将一个复杂的实体传递给clent端,让用户修改它,并将其发送回控制器。但我不知道该怎么做,以及客户端实体是否会因为与对象上下文分离而失去EF的关系跟踪。从clent侧回发复杂对象
任何想法?提前致谢!
ASP.NET MVC能够模型绑定复杂的对象,它很擅长。一个简单的方法是将您的视图字段命名为与您的对象属性相同。在你的动作方法中,表单发布给你的只需要复杂的对象作为参数。例如:
<% using(Html.BeginForm()) { %>
<%= Html.TextBox("Property1") %>
<%= Html.TextBox("Property2") %>
<%= Html.TextBox("Property3") %>
<%= Html.TextBox("Property4") %>
<%= Html.CheckBox("PropertyBool") %>
<%= Html.TextBox("Property5") %>
<% } %>
哪个职位,以一个动作方法,像这样:
public ActionResult Index(ComplexObject complexoObject)
{
}
这是一个相当简单的例子,你可以在对应所述对象的特性的视图具有不同的表单控件。如果您的对象非常复杂,您可以随时编写自己的模型绑定器并覆盖默认的模型绑定器。
是的,的确如此。但是我发布的是一个包含100多个问题的大问题。它们包含在一个列表中。我怎样才能发布回来?谢谢! – Roy 2009-11-13 08:20:02
http://marcomagdy.com/2009/09/03/asp-net-mvc-model-binding-form-inputs-to-action-parameters/ – queen3 2009-11-13 13:20:22
查看queen3的链接并查看“Binding to Collections of简单类型“和”绑定到自定义类型的集合“。如果您相应地命名您的表单元素,您可以接受一个列表作为参数,并且MVC将自动将该模型绑定到该列表。 – 2009-11-13 13:44:19
该实体将被分离。您将需要再次获取实体,更新属性,然后提交更改。或者你可以重新连接实体,但是当你处理多个相关的实体时,这可能会很棘手。如果您遇到这种情况,请查看http://www.codeproject.com/KB/architecture/attachobjectgraph.aspx。
你是说你在单个页面上显示100个问题的列表?我希望你没有那样做。首先,这不是非常用户友好的。它涉及很多向下滚动,用户可能会迷路,容易出错,如果出现问题,他必须重做。
更好的方法是每次只有一个或几个问题。用Next/Prev按钮在它们之间移动。
你可以让自己变得更容易,忘记回发并且采用AJAX的方式 - 向AJAX服务器发出一个JSON服务请求。并且在每个问题之后保存进度,所以如果出现问题,用户可以从他离开的地方稍后恢复。它将更加可维护,更快和用户友好。
为了防止您开始操作Javascript对象并想将它们发送到服务器,有一个简单的jQuery插件可以实现它(也可以发布日期等)。所以发送复杂的Javascript对象到控制器动作:http://erraticdev.blogspot.com/2010/12/sending-complex-json-objects-to-aspnet.html – 2011-04-22 07:55:09