【问题标题】:Asp.net Mvc custom content managed regions like webforms user controlsAsp.net Mvc 自定义内容托管区域,如 webforms 用户控件
【发布时间】:2014-03-14 20:14:53
【问题描述】:

在 asp.net 网络表单中,我们将用户控件用作页面的可重用组件。这些用户控件可以通过公共属性从外部传递值,例如在 Web 表单上,我们可以通过将键设置为该用户控件的公共属性来删除该用户控件以显示来自 db(如内容管理系统)的文本,它将提取该值。 (此键、值可以作为列表或字典存储在应用程序缓存中,以避免数据库往返)。

我想在 asp.net mvc 中实现相同的想法,但对它来说是新的。实施相同想法的任何专家建议会非常有帮助吗?谢谢

【问题讨论】:

    标签: asp.net asp.net-mvc caching webforms user-controls


    【解决方案1】:

    用户控件的概念是PartialView;有两种方法可以使用局部视图。首先是在视图本身中定义一个partial:

    @Html.Partial("NameOfViewInControllerFolder", ModelForPartialview)
    

    第二种方法是有一个返回局部视图的动作方法:

    public ActionResult X()
    {
       return PartialView("NameOfView");
    }
    

    从你的观点来看,使用:

    @Html.Action("X", "ControllerName")
    

    这将调用 action 方法,并插入结果。要确保仅在视图中调用操作,您可以使用 [ChildActionOnly] 属性。

    如果是action方法,你可以使用JQuery通过AJAX请求它​​,并将结果加载到视图中:

    $.ajax({ 
        type: "GET|POST", 
        url: "@Url.Action("X", "ControllerName")", 
        success: function(d) { /* d is HTML */ });
    

    【讨论】:

    • 谢谢布赖恩。 Web 表单通过单个 http 请求构建整个页面,即使上面有很多用户控件。但上面的解决方案看起来是在进行单独的 ajax 调用。在我的情况下,可能有 100 个由简单字符串提供的这些小部分视图。真的在寻找优化的解决方案。
    • 我给了你两个选项,并指出有一个 AJAX 好处(不是必需的)。请仔细阅读以上内容。
    • 谢谢布赖恩。将研究此选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 2011-12-20
    • 1970-01-01
    • 2012-05-09
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多