簡體   English   中英

將視圖中的模型傳遞回動作

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM