我尋找了很長時間來解決這個問題,但是我找不到任何東西。我已經將強類型定義爲我正在使用的控制器/視圖的模型;問題在於模型引用了其他複雜類型,所以我需要部分更新該模型的各個部分。例如,在頁面的一個選項卡中,我會部分地看到另一個視圖,它爲網格帶來了一些選擇;另一部分帶來另一部分;所以在用戶選擇他們的選項並提交之後,我需要將所有這些小片段發送到後期操作。如何將Model和json對象傳遞給控制器操作
我已經創建了我需要的JSON對象並將它發送給控制器。在行動中,我成功地獲得了模型,但JSON並沒有採取行動。那麼,如何將該JSON傳遞給視圖作爲控制器操作的附加參數?
我也已經使用fiddler檢查了請求併發送了JSON。對象是否通過特殊集合傳遞?
當然可以。該視圖預期或強制鍵入模型,在這種情況下是「提供者」實體。該實體具有原始類型和複雜類型。即使實體仍處於創建過程中,當達到創建後操作時,我需要傳遞部分對象來完成實體。該模型的 下面有一部分:
public class Provider2 : IProvider
{
public int Id { get; set; }
public bool IsApproved { get; set; }
public string RejectionNotes { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public string Email { get; set; }
public int OfficeAddressId { get; set; }
public virtual Address Address { get; set; }
public virtual ICollection<Chain> ProviderChain { get; set; }
public virtual ICollection<ProviderContact> ProviderContacts { get; set; }
public virtual ICollection<ExaminationPrice> ExaminationPrices { get; set; }
}
存在與簡單類型沒有問題,如整數,字符串等。 正如你所看到的,有集合和複雜的類型,這些類型是從部分視圖中檢索的,那一刻是獨立的實體,所以我需要在提交時將它們包裝在JSON或另一個對象(如JSON)中並獲取它在所達成的創建行動的時刻:
[HttpPost]
public ActionResult Create(Provider provider, Another object to be passed???)
{
if (ModelState.IsValid)
{
_repository.Save(provider);
return RedirectToAction("Index");
}
return View(provider);
}
的基本類型和屬性在模型映射,所以他們都沒有問題,但藏品沒有被映射,因此多數民衆贊成的理由讓我的ADDRES試圖傳遞一個像json這樣的aditional對象來將所有的部分從純HTML包裝到javascript對象,因爲它們不會直接映射到模型。
所以,通過這個JavaScript即時通訊發送我需要的數據視圖和它的發送,但顯然行動沒有收到json對象。
$(function() {
$("#ButtonSave").click(function() {
var prices = getPrices();
if (prices != null) {
$.ajax({
url: '/Provider/Create',
type: 'POST',
dataType: 'json',
data: prices,
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert('Success');
}
});
}
});
});
function getPrices() {
var elements = '[';
var rows = $("#selectedElementsGrid tr.selectable").each(function() {
var idValue = '{price : { "Id":' + $(this).find(".id").val() + ',';
var nameValue = ' "Name":"' + $(this).find(".name").text() + '",';
var priceValue = ' "Price":"' + $(this).find(".price").val() + '"} },';
elements = elements + idValue + nameValue + priceValue;
});
elements = elements.substring(0, elements.length - 1) + ']';
return JSON.stringify(elements);
}
在此先感謝!
我看了你的問題3次,仍然不明白你在問什麼。你能提供你的代碼的相關部分來幫助說明嗎? – McGarnagle
當然。該視圖預期或強制鍵入模型,在這種情況下是「提供者」實體。這個實體具有原始類型和複雜類型: – Charles
讓我改述。 **在行動中,我成功地獲得了模型,但是JSON並沒有發揮作用。**如果您已經擁有該模型,爲什麼需要JSON? – McGarnagle