Ответ 1
Возврат View()
- отображает страницу .aspx |.cshtml
- Отображает обычную страницу .aspx, которая также может содержать частичные представления
Возврат PartialView()
- Renders.ascx |.cshtml Контроль
- Отображает сегмент HTML в браузере, который может запрашиваться через запросы AJAX или Non-AJAX.
View() возвращает ViewResult
PartialView() возвращает PartialViewResult
оба наследуют от ViewResultBase
Разница описывается Reflector ниже...
public class PartialViewResult : ViewResultBase
{
// Methods
protected override ViewEngineResult FindView(ControllerContext context)
{
ViewEngineResult result = base.ViewEngineCollection.FindPartialView(context, base.ViewName);
if (result.View != null)
{
return result;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_PartialViewNotFound, new object[] { base.ViewName, builder }));
}
}
public class ViewResult : ViewResultBase
{
// Fields
private string _masterName;
// Methods
protected override ViewEngineResult FindView(ControllerContext context)
{
ViewEngineResult result = base.ViewEngineCollection.FindView(context, base.ViewName, this.MasterName);
if (result.View != null)
{
return result;
}
StringBuilder builder = new StringBuilder();
foreach (string str in result.SearchedLocations)
{
builder.AppendLine();
builder.Append(str);
}
throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, MvcResources.Common_ViewNotFound, new object[] { base.ViewName, builder }));
}
// Properties
public string MasterName
{
get
{
return (this._masterName ?? string.Empty);
}
set
{
this._masterName = value;
}
}
}