Comprendo che le viste parziali vengono utilizzate per eseguire il rendering di parti di una vista. Ma non riesco a capire qual è la differenza tra return View()
e return PartialView()
e quando li usi.Qual è la differenza tra "visualizzazione di ritorno()" e "ritorno di PartialView()"
risposta
ritorno View()
- Renders un aspx | .cshtml pagina
- Renders una pagina aspx normale che può anche contenere parziali Visualizzazioni
ritorno PartialView()
- Rende .ascx | controllo .cshtml
- Rende un segmento di HTML al browser che può essere richiesto allo stesso modo tramite richieste AJAX o Non-AJAX.
View() restituisce ViewResult
PartialView() restituisce PartialViewResult
sia ereditare da ViewResultBase
La differenza è descritto da Reflector qui di seguito ...
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;
}
}
}
Un'azione del controller restituisce in genere un oggetto PartialView quando viene utilizzato AJAX e viene eseguito un aggiornamento dell'area della pagina rappresentata dalla vista parziale. Il modo normale di usare viste parziali è semplicemente chiamare Html.RenderPartial
all'interno della tua vista principale.
return PartialView() restituisce il frammento di codice HTML ed è utilizzato con ViewUserControls - file ASCX. Il vantaggio principale dell'utilizzo di "return PartialView()" è quando non si desidera rendere tutte le altre cose della pagina HTML, come i tag HTML, BODY, HEAD.
Uno degli usi più comuni da parte mia è quando voglio eseguire il rendering del controllo utente in base al fatto che la richiesta di un'azione sia chiamata AJAX.
Quindi ho una vista denominata MyControl.aspx in cui utilizzo l'helper HTML di RenderPartial e ho una vista parziale denominata MyControl.ascx in cui eseguo il rendering effettivo.
posso passare tra quei due nella mia azione di controllo in questo modo:
if (Request.IsAjaxRequest())
return PartialView("MyControl"); // this renders MyControl.ascx
return View(); // this render MyControl.aspx
- 1. Qual è la differenza tra uscita e ritorno?
- 2. Differenza tra "ritorno" e "puro"
- 3. Differenza tra ritorno Future.failed (Eccezione) e lancio di un'eccezione
- 4. Qual è la differenza tra il valore di ritorno o Promise.resolve da allora()
- 5. ritorno PHP (valore); vs valore di ritorno;
- 6. Qual è la differenza tra il ritorno di un `HttpResponseNotFound` e il sollevamento di un` Http404` in Django?
- 7. Qual è la differenza tra UIViewController e UITableViewController
- 8. In Python, qual è la differenza tra pass e return
- 9. Qual è la differenza tra std :: transform e std :: for_each?
- 10. Qual è la differenza tra os.getuid() e os.geteuid()?
- 11. Qual è la differenza tra QueueUserWorkItem() e BeginInvoke(), per eseguire un'attività asincrona senza tipi di ritorno necessari
- 12. Qual è la differenza tra barra di ricerca, barra di ricerca e controller di visualizzazione ricerca?
- 13. Qual è la differenza tra $ e $$?
- 14. Qual è la differenza tra {0} e +?
- 15. Qual è la differenza tra = e: =
- 16. Qual è la differenza tra ("") e (null)
- 17. Qual è la differenza tra dict() e {}?
- 18. Differenza tra Environment.Exit e semplice ritorno 2 da Main
- 19. Qual è la differenza tra Verilog! e ~?
- 20. Qual è la differenza tra? : e ||
- 21. qual è la differenza tra [[], []] e [[]] * 2
- 22. Qual è la differenza tra " " e ""?
- 23. Qual è la differenza tra {0} e ""?
- 24. Qual è la differenza tra `##` e `hashCode`?
- 25. Qual è la differenza tra .ToString() e + ""
- 26. qual è la differenza tra:.! e: r !?
- 27. Qual è la differenza tra la visualizzazione di marcatori e problemi in Eclipse?
- 28. Qual è la differenza tra socket e HANDLE in Windows?
- 29. qual è la differenza tra lo SpVoice e SpeechSynthesizer
- 30. Qual è la differenza tra un modello di visualizzazione e un oggetto di trasferimento dati?
mi piacerebbe downvote se potessi, ma ReturnView() vs View() non ha assolutamente nulla a che fare con il rendering di una vista ".aspx" o ".ascx". CORREZIONE: sembra che possa effettivamente gestire quale vista viene recuperata usando la convenzione (ad esempio, il controller rende la visualizzazione dello stesso nome). a prescindere, puoi alimentare sia una vista .aspx che una .ascx a PartialView() senza problemi. – kdawg
'View()' restituisce un 'ViewResult' e PartialView() restituisce un' PartialViewResult'. Esegui Reflector sui due metodi per te stesso e vedi quale usare quando decidi cosa eseguire il rendering. 'PartialViewResult' e' ViewResult' sono due classi diverse che entrambi ereditano da 'ViewResultBase', che sono destinati a scopi diversi! PartialViews non ha MasterPages (le viste possono), stai davvero andando a rendere "' somecontrol.ascx' "usando' View() '... – xandercoded