0

2 つの部分ビュー (グリッドビューとコールバック パネル) を持つメイン ビューがあります。

このメイン ビューは を受け取りIEnumerable<Model>、パネルは を受け取るだけModelです。

ビューが最初に呼び出されると、パネルの部分ビューは空のモデルで満たされるため、空になります。

Editしかし、GridViewをクリックしたら、パネルを再レンダリングしたいと考えています。

どうすればこれを達成できますか?

現在@Html.ActionLink、編集ボタンがありますが、パネルの部分ビューを再レンダリングする代わりに新しいビューを作成するため、機能していません。

手がかりはありますか?

編集:

これは私の編集です:

Html.ActionLink("Edit", "EditConfig", new { id = DataBinder.Eval(c.DataItem, "QueueMonitorConfigurationsID") })

編集リンクが呼び出す関数:

    [HttpGet]
    public ActionResult EditConfig(int id)
    {
        StorageConfigurationModel resultForPanel = new StorageConfigurationModel { };
        IEnumerable<StorageConfigurationModel> configList = (IEnumerable<StorageConfigurationModel>)Session["ConfigurationList"];
        foreach (StorageConfigurationModel configModel in configList)
        {
            if (configModel.QueueMonitorConfigurationsID == id)
            {
                resultForPanel = configModel;
                break;
            }
        }
        return PartialView("cbpnlNewUpdateConfigs", resultForPanel);
    }

部分ビューを含むメイン ビュー:

@model IEnumerable<BPM.Website.Models.StorageConfigurationModel>

@Html.Partial("gvConfigurations", Model)

@Html.Partial("cbpnlNewUpdateConfigs", new BPM.Website.Models.StorageConfigurationModel { QueueMonitorConfigurationsID = -1 })
4

2 に答える 2

4

現在、編集ボタンに @Html.ActionLink があります

AJAX を使用できます。たとえば、これHtml.ActionLinkを に置き換え、およびスクリプトを (この順序で)Ajax.ActionLink含めて、AJAX 呼び出しとして機能させることができます。例えば:jquery.jsjquery.unobtrusive-ajax.js

@Ajax.ActionLink(
    "click to edit record", 
    "Edit", 
    new { id = item.Id }, 
    new AjaxOptions { UpdateTargetId = "editContainer" }
)

リンクがクリックされると、AJAX 要求を使用して Edit コントローラー アクションが呼び出され、現在のアイテムの ID がパラメーターとして渡されます。この AJAX 要求が DOM 要素を完了するid="editContainer"と、この AJAX 呼び出しの結果で更新されます。したがって、編集コントローラー アクションは、編集するレコードを含む部分ビューを返す必要があります。

于 2013-06-05T19:54:58.603 に答える
0

で解決Ajax POST

$.ajax({ type: "POST", url: url, data: データ, success: 成功, dataType: dataType });

于 2013-06-18T20:13:55.450 に答える