[英]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.