【问题标题】:How to TryUpdateModel from outside of Controller in MVC3如何从 MVC3 中的控制器外部 TryUpdateModel
【发布时间】:2012-03-06 18:11:20
【问题描述】:

我的应用程序具有可以打开和关闭的模块,这些模块通过 Html.Partial 调用为视图做出贡献。当页面回发到控制器时,我想让模块使用控制器拥有的 TryUpdateModel 之类的东西来处理它们的各个模型。问题是 TryUpdateModel 是一个受保护的方法,不能从控制器外部访问。

如何从控制器外部的类中执行 Controller.TryUpdateModel 之类的操作?

【问题讨论】:

  • 能否请您发布您的操作方法的代码?以及您访问视图中的部分视图的方式?这将大有帮助。

标签: asp.net-mvc-3


【解决方案1】:

如果我没看错,听起来您希望局部视图能够自行更新。

我对一些 jQuery 做了类似的事情,通过调用一个动作并在局部视图中返回一个局部视图。开始?

简单示例。 - 真的很简单

_partialViewStart.cshtml

<div id="partialFillerResult">
</div>
<script type="text/javascript">
    $(document).ready(function() {
        loadPartialViewFiller();
    });
    function loadLatestTribes() {
        $("#partialFillerResult").load("@Url.Action("PartialViewFiller", "Home")").fadeIn("slow");
        setTimeout(loadPartialViewFiller, 5000);
    }
</script>

HomeController.cs

public ActionResult PartialViewFiller()
{
    var yourModel = new ExpandoObject();

    if (yourModel == null) return PartialView("_empty");
    return PartialView("_partialViewFiller", yourModel);
}

_partialViewFiller.cshtml

@model dynamic
<div class="objectWrapper">
    <p>
        @Model.Name
    </p>
</div>

【讨论】:

  • 我不需要部分视图从客户端更新自己。整个页面正在发布到控制器。从那里控制器需要让各个模块更新它们各自的模型。我能想到的最接近的方法是扩展 Controller 类并将 TryUpdateModel 方法公开为公共,然后将对控制器的引用传递给各个模块
  • 你可以使用@Html.RenderAction()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多