[英]Passing the model in a view back to an action
我想知道如何将模型传递回操作,以便我可以继续处理数据,但是可以根据按钮的按下情况在不同的操作中进行操作
为了发回它,我指定了Control,Action,并使用新的{dom = Model}指定参数。
dom是一个List(因此是一个域对象列表。我传入的模型是IQueryable。当我将dom设置为IQueryable时,仍然看不到任何视图。这是使用Telerik控件的代码段。
视图
<% Html.Telerik().Grid(Model).Name("Domains")
.DataKeys(dataKeys => dataKeys.Add(c => c.DomainId)).DataKeys(dataKeys => dataKeys.Add(c => c.Timestamp))
.Columns(columns =>
{
columns.Template(o =>
{ %>
<%= Html.Encode(Html.OutputAction(ViewData["PerformActions"] as List<string>))%>
<%
}).Title("Action");
columns.Bound(o => o.DomainId);
columns.Bound(o => o.Name);
columns.Bound(o => o.SiteId);
columns.Bound(o => o.ScrubAndRedirect);
columns.Bound(o => o.ReportingSiteId);
columns.Bound(o => o.TrafficCopClass);
columns.Bound(o => o.SiteName);
columns.Bound(o => o.FeedType);
columns.Bound(o => o.Active);
}).Pageable().Sortable().Filterable().DataBinding(db => db.Server().Select("Domains", "Preview", new { doms = Model })).Render();%>
*ACTION*
public ActionResult Preview(List<Domain> doms)
{
return View("Preview", doms.AsQueryable<Domain>());
}
谢谢
我认为您想要做的只是让“预览”和“提交”动作同时进入“列表”区域。 如果没有发布预览,则可能需要在某处放置一个EditorForModel(即使已隐藏)。 换句话说,您的编辑视图将发布到显示视图的预览操作,然后该页面应将数据发布到您的提交操作。 我相信会做到的。 希望有帮助。
通常,在MVC中,您不会将大量DOM对象列表传递回服务器来“重建”实体或域对象列表。 将值发布到Controller操作后,它们几乎总是来自HTML表单。 在后台,MVC通过以下方式从POST中提取值:
Request.Forms["fieldName"]
然后尝试将值自动映射到ActionMethod中的参数。
如果我了解您的情况,最常见的做法是在触发操作时向控制器提交或传递KEY(或某些标识符),然后使用它来获取必要的域对象(从缓存,数据库中获取) ,磁盘等)。 如果需要考虑可伸缩性,那么好的缓存策略可以帮助避免昂贵的I / O操作。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.