我在MVC 4應用程序的同一頁面中使用了多個部分視圖和相同的強類型模型。 我想調用控制器中的單個動作並通過ajax調用返回模型並一次性將其用於所有部分視圖。如何在ajax中的多個部分視圖中使用相同的模型
回答
你給的東西並不多,但讓我盡我所能,給出一個對你最有意義的例子。所以說,你有以下型號:
public class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
/// <summary>
///
/// </summary>
/// <remarks>
/// 1 = Premium Users
/// 2 = Basic Users
/// NOTE: I'm using int instead of an enum to make the sample more simple.
/// </remarks>
public int UserType { get; set; }
}
而且看起來像這樣的控制方法:
[HttpPost]
public ActionResult SomeAction(int id)
{
IEnumerable<UserProfile> profiles = some_method_that_does_something_and_builds_the_model();
return Json(profiles);
}
你可以做你的Ajax調用是這樣的:
$.post('@Url.Action("MyAction", "MyController")', { id: $('#myId').val() },
function (result) {
// you can use $.each here but for loop is more efficient
var list1 = '';
var list2 = '';
for (var i = 0; i < result.length; i++) {
// just add the name as p's for a simple example
// I build the result as string as it is more efficient than building p elements
if (result[i].UserType == 1) {
list1 += '<p>' + result[i].UserName + '</p>';
}
else {
list2 += '<p>' + result[i].UserName + '</p>';
}
}
$("#first").append(list1);
$("#second").append(list2);
});
但是不是將結果值添加到字符串,我們可以調用已經定義的局部視圖來加載或渲染使用獲得的模型,如果否則段.. – serene 2013-03-20 09:55:40
正如你所說,部分視圖已經被「渲染」了,所以你只需要更新其中的一些內容,我給你的是一個簡單的例子,讓你開始使用,我相信你有一個更復雜的視圖,你有多個html元素。 – 2013-03-20 10:03:28
Have你曾經聽說過[Knockout.js](http://knockoutjs.com/)?我認爲這最能滿足你最後評論的需求,你可以[從這裏開始](http://learn.knockout js.com/)。 – 2013-03-20 10:04:56
- 1. 如何在視圖中使用兩個相同的模型? [MVC4]
- 2. 如何在視圖中創建多個模型?最好使用部分視圖和動態數量的模型
- 3. 在多個模型的Rails中使用Ajax窗體部分
- 4. 在不同的(部分)視圖中使用相同的代碼
- 5. 如何在MVC5的部分視圖中更新視圖模型?
- 6. 部分視圖的AJAX模型驗證
- 7. zend如何在多個動作中使用相同的視圖?
- 8. 在主視圖中創建複雜模型的多個部分
- 9. 如何與多個模型共享相同的視圖?
- 10. 如何將相同的模態從視圖中傳遞到部分視圖
- 11. ASP.NET MVC:如何在一個視圖中使用多個模型?
- 12. 如何使用多個視圖模型
- 13. 棱鏡中的部分視圖模型
- 14. 部分視圖中不同模型類型的問題
- 15. 如何在多個視圖共享相同視圖模型時導航
- 16. 如何在控制器/視圖mvc中使用多個模型?
- 17. 在多個WPF視口中呈現相同的模型
- 18. 在一個視圖中的視圖模型/實體或多個視圖模型的多個視圖?
- 19. 如何使用一個局部視圖來顯示兩個不同視圖模型的相似數據?
- 20. 如何使用ajax更新視圖中的模型?
- 21. 在knockout.js中使用多視圖模型
- 22. 在Yii2中顯示相同視圖的兩個模型
- 23. 如何使用相同的形式在多個視圖
- 24. 使用強類型視圖驗證視圖中的部分模型
- 25. 模型綁定使用包含在主視圖中的強類型的很多部分視圖
- 26. MVC 3在兩個相似的視圖中使用相同的模型並且使用非空類型
- 27. 如何使用模型在mvc 4的分部視圖中綁定dropdownlist?
- 28. 對同一模型的多個組使用ajax分頁(will_paginate)
- 29. 在多個片段中使用相同的Recycler視圖
- 30. 如何在不同視圖中重用相同的表視圖?
只是使它清楚,既然你「想調用一個單一的行動」,返回模型,那麼你的意思是行動(最有可能)返回一個JSON對象?而你是**不是**一次加載ajax中的部分視圖? – 2013-03-20 08:06:51
是的,我正在返回一個json對象,並希望在單個事件中更新多個部分視圖 – serene 2013-03-20 08:16:10
好吧,那麼你是**不** **在ajax中加載部分視圖 - 你沒有像'public PartialViewResult PartialView1() 。如果是這種情況,那麼您可以只針對每個部分視圖中的所需元素。你可以編輯你的文章,也可以包括你的兩個部分視圖,這樣我可以給你一個對你最有意義的答案嗎? – 2013-03-20 08:32:56