0


0

ビュー内のモデルをアクションに戻す

モデルをアクションに戻して、データの操作を続けることができるが、押されたボタンに基づいて別のアクションを実行する方法を疑問に思っています

送り返すには、Control、Actionを指定し、新しい\ {dom = Model}を使用してパラメーターを指定します。

domはリストです(ドメインオブジェクトのリストです。 渡される私のモデルはIQueryableです。 domをIQueryableにしても、ビューからは何も返されません。 Telerikコントロールを使用したスニペットです

VIEW

<% 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))%>
        <%
            }).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 doms)
 {
     return View("Preview", doms.AsQueryable());
 }

ありがとう

2 Answer


0


あなたがやりたいのは、プレビューとコミットの両方のアクションをリストドムで実行することです。 プレビューで投稿されない場合は、EditorForModelがどこかにある必要があります(非表示であっても)。 つまり、編集ビューはビューを表示するプレビューアクションに投稿し、そのページはデータをコミットアクションに投稿する必要があります。 それでいいと思う。 それが役立つことを願っています..


0


一般的に、MVCでは、エンティティオブジェクトまたはドメインオブジェクトのリストを「再構築」するために、DOMオブジェクトの大きなリストをサーバーに渡さないでください。 値がControllerアクションに投稿されるとき、それらはほとんど常にHTMLフォームからのものです。 舞台裏では、MVCはPOSTから値を抽出します

Request.Forms["fieldName"]

そして、ActionMethodのパラメーターに値を自動マッピングしようとします。

あなたのシナリオを理解している場合、最も一般的な方法は、アクションが発生したときにコントローラにキー(または何らかの識別子)を送信または渡すことであり、それを使用して必要なドメインオブジェクトを(キャッシュまたはデータベースから)取得します、ディスクなどから)。 スケーラビリティが懸念される場合、適切なキャッシング戦略は、コストのかかるI / O操作を回避するのに役立ちます。

お役に立てば幸いです。