2012-02-17 31 views
3

我想了解一个用户控件的等价物是在MVC应用程序中吗?根据我的理解,这是一个部分。我发现的问题是,当我使用用户控件时,我可以将逻辑封装在该控件中,并在多个页面中重复使用它,而不必担心父页面。MVC Partials与用户控件?

这是如何与MVC协同工作的?似乎没有任何方法可以用部分视图封装逻辑..事实上,它让我感到困惑。

这是否意味着对于任何可能使用部分的页面,控制器总是必须返回部分数据以防万一需要?这看起来效率不高吗?我似乎无法包围我的头如何工作......

+0

这和在里面有一个用户控件的aspx页面完全一样。它会每次加载。对于只加载部分,你会有一个控制器方法只返回部分视图。 – 2012-02-17 11:01:17

回答

1

您可以使用剃刀语法添加逻辑。例如,您可以使用条件语句来操作最终输出。

@{ 
    if(whatever == true) 
    { 
     <p>Whatever is true</p> 
    } 
    else 
    { 
     <span id="someId"> 
      <label for="enterName">Enter name:</label> <input type="text" id="enterName" /> 
     </span> 
    } 
} 

除了这个,你可以使用@helper类似语法

@helper MakeLink(dynamic id) 
{ 
    <div id="actionButtons"> 
     @Html.ActionLink("Some Title", "Some Action", new {id = id}) | 
     @Html.ActionLink("Another Title", "Another Action", "Some Controller", new {id = id}) 
    </div> 
} 

中谐音的逻辑是你是用来在Web窗体用户控件的稍有不同。上面的逻辑可以放在Partial中,以便稍后重用它,您只需将它放在/ Views/Shared/DisplayTemplates或EditorTemplates中即可。

+0

我明白,剃须刀可以用于简单的逻辑,但如果它更复杂一些呢?我想最难理解的是你如何用部分视图封装逻辑?这甚至有可能吗? – alimac83 2012-02-17 11:12:41

+0

逻辑有多复杂?如果它太复杂了,你可能需要重新思考你的策略,并创建帮助程序或实用程序类,你可以从部分内部调用帮助你构建输出。 – 2012-02-17 11:15:52

+0

那么譬如说,我在一个网站上不得不调用一些Web服务,操纵这个返回的数据然后渲染它。这一切都为我的用户控制很好,因为我可以封装所有的逻辑..但我怎么会在MVC中做到这一点? – alimac83 2012-02-17 12:30:06