Tôi hiểu rằng một phần lượt xem được sử dụng để hiển thị các phần của chế độ xem. Nhưng tôi không thể hiểu sự khác biệt giữa return View()
và return PartialView()
là gì và khi nào bạn sử dụng từng loại.Sự khác biệt giữa "return View()" và "return PartialView()"
Trả lời
Return View()
- Renders một .aspx | .cshtml trang
- Hiển thị đường trang aspx bình thường mà cũng có thể chứa một phần Lượt xem
Trả lại PartialView()
- Người cho vay .ascx | .cshtml Kiểm soát
- Cho phép phân đoạn HTML tới trình duyệt có thể được yêu cầu thông qua các yêu cầu AJAX hoặc Non-AJAX.
View() trả về ViewResult
PartialView() trả về PartialViewResult
đều kế thừa từ ViewResultBase
Sự khác biệt được mô tả bởi Reflector dưới đây ...
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;
}
}
}
Hành động của bộ điều khiển thường trả về một phần xem khi AJAX được sử dụng và bản cập nhật của khu vực trang được thể hiện bằng xem một phần được thực hiện. Cách thông thường để sử dụng một phần lượt xem chỉ đơn giản là gọi Html.RenderPartial
bên trong chế độ xem chính của bạn.
return PartialView() trả về đoạn mã HTML và nó được sử dụng với các tệp ViewUserControls - ASCX. Ưu điểm chính của việc sử dụng "return PartialView()" là khi bạn không muốn hiển thị tất cả các công cụ trang HTML khác, như HTML, BODY, HEAD tags.
Một trong những cách sử dụng phổ biến nhất của tôi là khi tôi muốn chỉ hiển thị điều khiển người dùng dựa trên việc yêu cầu hành động là cuộc gọi AJAX hay không.
Vì vậy, tôi có một dạng xem được gọi là MyControl.aspx, nơi tôi sử dụng trợ giúp HTML RenderPartial và tôi có một phần Xem tên là MyControl.ascx nơi tôi thực hiện kết xuất thực tế.
tôi có thể chuyển qua lại giữa hai trong hành động điều khiển của tôi như thế này:
if (Request.IsAjaxRequest())
return PartialView("MyControl"); // this renders MyControl.ascx
return View(); // this render MyControl.aspx
- 1. Sự khác nhau giữa "return 0" và "exit (0)"
- 2. return return before finally
- 3. return return for for loop
- 4. thoát(); chết(); return false;
- 5. Sự khác biệt giữa. và: trong Lua
- 6. Javascript: try/catch/return return statement
- 7. lambda return bool
- 8. Sự khác biệt giữa String.isEmpty() và String.equals ("")
- 9. request.format return */*
- 10. Int.class return
- 11. Sự khác biệt giữa sqrt và sqrtf
- 12. sự khác biệt giữa HttpResponseMessage và HttpResponseException
- 13. Sự khác biệt giữa $ (...) và `...`
- 14. Sự khác biệt giữa. và #
- 15. Sự khác biệt giữa $ * và $ @
- 16. Sự khác biệt giữa ". +" Và ". +?"
- 17. Sự khác biệt giữa "**/* /" và "** /"?
- 18. Sự khác biệt giữa = và: =
- 19. Sự khác biệt giữa SwingWorker và Executor
- 20. sự khác biệt giữa * y ++ và ++ * y?
- 21. Spring MVC Controller Return Loại
- 22. express cookie return undefined
- 23. Sự khác biệt giữa NonSerialized và Xml.Serialization.XmlIgnore?
- 24. NSDocumentController currentDocument return nil
- 25. Sự khác biệt giữa strncpy và memcpy?
- 26. Sự khác biệt giữa getString() và getResources.getString()
- 27. loại Return thực sự dài biểu
- 28. Sự khác biệt giữa! và !! trong yaml?
- 29. Sự khác biệt giữa LIST_HEAD_INIT và INIT_LIST_HEAD
- 30. Sự khác biệt giữa strstream và stringstream
tôi muốn downvote nếu tôi có thể, nhưng ReturnView() vs View() hoàn toàn không có gì để làm với một khung nhìn ".aspx" hoặc ".ascx" được hiển thị hay không. CORRECTION - có vẻ như nó thực sự có thể xử lý khung nhìn nào được tìm nạp bằng cách sử dụng quy ước (ví dụ: bộ điều khiển hiển thị chế độ xem cùng tên). bất kể, bạn có thể nạp cả dạng .aspx và .ascx vào PartialView() mà không có vấn đề gì. – kdawg
'View()' trả về 'ViewResult' và PartialView() trả về một' PartialViewResult'. Chạy Reflector trên hai phương thức cho chính bạn và xem cái nào bạn nên sử dụng khi quyết định những gì để render. 'PartialViewResult' và' ViewResult' là hai lớp khác nhau mà cả hai đều kế thừa từ 'ViewResultBase', được dành cho các mục đích khác nhau! PartialViews không có MasterPages (Views có thể), bạn có thực sự sẽ trả về "' somecontrol.ascx' "bằng cách sử dụng' View() '... – xandercoded