都属于用户控件,Action是直接连接到Action,并且会执行业务逻辑,通过源代码分析可以看出Action最终转换为HTML字符串输出了。并且通过断点调试可以发现Action和RenderAction可进行业务逻辑处理。其中由于RenderAction是写入到流里不返回,所以需要使用@{}方式调用。
1 public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData) 2 { 3 using (StringWriter writer = new StringWriter(CultureInfo.CurrentCulture)) 4 { 5 htmlHelper.RenderPartialInternal(partialViewName, viewData, model, writer, ViewEngines.Engines); 6 return MvcHtmlString.Create(writer.ToString()); 7 } 8 }
而Partial、RenderPartial和Action、RenderAction极其相似,不同的是Partial和RenderPartial是直接显示分布页面信息,不进行业务逻辑处理。即不会像Action那样命中断点。