mvc5控制器修改html,关于jquery:如何通过对控制器的ajax调用在MVC5中呈现局部视图并返回HTML...
如何使用Ajax加載以HTML呈現的完整部分視圖(所以我只設置了div.html)
我需要一個Ajax調用來調用控制器操作,它將呈現一個完整的局部視圖(紅色),并將其附加到當前加載的視圖的末尾?
[我知道如何附加到DOM以及如何進行Ajax調用]
我需要知道什么是最好的管道方法,操作應該返回什么類型的操作結果,如果有一個內置的機制來避免重新發明輪子?
return Partialview("_PartialViewName)并使用$.load調用返回partialview的控制器方法
從從Ajax調用的控制器操作返回partialView作為actionResult?會返回呈現的HTML嗎?這樣我就可以把它放到DIV中了。
你不需要ajax,只要用$.load。
好的,謝謝,我需要研究一下.load是如何使用的。謝謝+ 1
任何時候…快樂編碼:)
@Guruprasad Rao建議使用$(selector).load(url,data,callback);是目前最好的解決方案。
ASP.NET MVC中有內置的Ajax幫助程序,可以涵蓋基本場景。
您需要安裝并引用jquery.unobtrusive-ajaxjavascript庫(+jquery依賴項)。然后在主視圖(比如index.cshtml)中輸入以下代碼:
索引文件
@Ajax.ActionLink("Load More Posts","MorePosts", new AjaxOptions()
{
HttpMethod ="GET",
AllowCache = false,
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId ="posts-wrapper"
})
注:@Ajax.ActionLink助手接受AjaxOptions參數進行更多的自定義。
在控制器(比如homecontroller.cs)中,您應該返回PartialViewResult:
public ActionResult MorePosts(int? offset, int? count)
{
IEnumerable posts = myService.GetNextPosts(offset, count);
return PartialView(posts);
}
最后定義moreposts.cshtml部分視圖:
@model IEnumerable
@{
Layout = null;
}
@foreach (var post in Model)
{
>@post.Prop1
@post.Prop2
}
就是這樣。當一些用戶點擊Load More按鈕時,將加載更多的文章。
注1:您可以實現OnBegin功能來實現決定下一個要加載的日志的實際邏輯(例如,獲取上一個加載日志的ID并將其發送到服務器)。
注2:使用自定義jQuery.ajax調用(不使用jquery.unobtrusive)可以獲得相同的結果。唯一的區別是手動Ajax調用和單擊事件。
希望這有幫助。如果需要,我可以寫一個更完整的例子。
這與我的黑莓手冊的方法使呼叫使用Ajax時,美元就可以知道全.ajax track errors。謝謝
Please請@維克多how to make this美國導游手冊參數自動呼叫as與which we will not get on Main View。
我建議從nuget獲取Westwind.Web.Mvc庫,您可以將任何視圖運行到字符串中,作為JSON結果返回。
public JsonResult GetPosts()
{
string postsHtml = ViewRenderer.RenderPartialView("~/views/yourcontroller/_PostsPartial.cshtml",model);
return Json(new { html = postsHtml });
}
正如@guruprasad在評論中所說,您可以使用return PartialView(model)從MVC控制器返回部分視圖,但使用renderpartialview,您可以將其作為字符串輸出,并在需要時將其與任何其他值一起輸出為json。如果您選擇使用WebAPI,這將有效,因為它不具備呈現內置視圖的能力。
你可以進入HTML渲染全部粘在JSON的物業?這是方便的。viewrenderer.renderpartialview is also方便。謝謝,我會查廠for this。
讀你的帖子invisiblepanda @?它不讓它(這)樣partialview does the view,renders out to a字符串。
如果你使用webapi You probably不應該回來,好的HTML。
"我freedomn米高度disagree with that聲明
ASP.NET MVC和Web API控制器和controllers are the same thing in the latest基本版本,他們都是統一的。
盧克只是因為茶有"雙控制器的句法相似的意思他們不均值for the same thing。Web API to handle is!商業邏輯,whereas ASP.NET MVC的View/presentation should處理邏輯。以保存你的業務層分離的關注,should not the view of定義你的布局,例如,HTML。of this is the the福利消費能力to the same在多不同的API,vastly前端應用。for instance,Windows應用程序# 10 C,安安和瀏覽器應用程序的HTML 5,含Objective-C的程序。
我@丹that this with You to同意趨勢不好茶的最佳實踐,它會更好,那么返回值和render to the standard with or something to a角。不管一個人多,關注的是在分離of the play with the殼層和modularisation of the is not necessarily尾巴,什么使你通過the values to view。在這房子是分離,the the view is between the渲染和生成viewmodel is for the view that仍然分離,這只是你使用the method to HTML產生不同的最終結果。你不同意嗎?
它是真正的"盧克,there may be when both the時代邏輯和業務邏輯在Web API reside the presentation and the前端項目,應用"模擬"presenter which is just吐出來的結果。雖然在這神奇的房子,為什么你有一個前端應用在所有?當there may be some緩存相關的原因,使靜電to on the pages for高scalability服務器的方法與啟動,就不會recommend consideration沒有認真。處理客戶需求給你regardless of error to You can never建筑的決定,我真的,真的有一個"愚蠢"的前端。
盧克也",for which the original Comment with context,你disagree高度stated [ D ]""You probably be HTML不應該回來","You should not不返回HTML"。我認為這是公平的說回來commonly is the less有用的HTML設計。
對不起,如果我似乎在混亂位,有一些啤酒!我想make the Point is that the logic view是曼弗雷迪或法拉利嗎或是業務邏輯應該在webapi reside說恩,我不應該。有一個簡單的方式提供給webapi from within a view to。the view is the view that和我仍然可以作為模型is generated from the商務邏輯層controllers between that can be shared webapi controllers和MVC。
我也喜歡我的disagree to change):somewhat disagree高度
總結
以上是生活随笔為你收集整理的mvc5控制器修改html,关于jquery:如何通过对控制器的ajax调用在MVC5中呈现局部视图并返回HTML...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql timestamp类型比较_
- 下一篇: matlab 读取照片imread,利用