我很新的MVC,並嘗試將現有的網站移植到MVC4時遇到此問題。MVC4從視圖傳遞複雜的對象到控制器,新的視圖不是渲染
我們使用的模型中大部分數據都是通過服務調用填充的,所以顯然我們希望將調用保持爲最小值。問題是,當我試圖將模型傳遞迴控制器時,模型中的複雜對象總是變爲空。我能夠使用ajax將數據保存到控制器的回調中;然而,我需要動作來返回一個新的視圖,並在動作完成後,視圖的代碼執行,但沒有重定向(我認爲這是ajax的重點,我想我要求的是一個解決方案將以相同的方式保留數據,但實際上會重定向)。
這裏是我的模型:
public class DistributionModel
{
public string typeOfDistribution { get; set; }
public Document document { get; set; }
public string thumbnailUrl { get; set; }
public MergeFieldModel mergeFields { get; set; }
}
public class MergeFieldModel
{
public MergeFields documentMergeFields { get; set; }
}
這裏是我使用的控制器動作:
public ActionResult Index(DistributionModel distributionModel)
{
distributionModel.mergeFields = new MergeFieldModel() { documentMergeFields = MergeFieldsHelper.GetDocumentMergeFields(distributionModel.document.Id) };
return View("Index", distributionModel);
}
我試圖用一個[email protected]( 「指數」,型號),而不是下面的塊中的按鈕來調用控制器並執行重定向(重定向本身確實有效,但是之後我必須在控制器內執行另一個服務調用以檢索與我從調用視圖一起工作的相同文檔),因爲模型中的Document對象對c繼續返回NULL ontroller。
以下是調用控制器並實際返回完整模型的視圖部分:我認爲我正在尋找的是一種無ajax的方法,以便我可以重定向到分發/索引頁面(這是從分發/ DocumentDetails頁面)
<button id="EmailDistribution" data-corners="false" data-theme="a">EMAIL</button>
$('#EmailDistribution').click(function() {
var model = @Html.Raw(Json.Encode(Model));
$.ajax({
url: '@Url.Action("Index", "Distribution")',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(model),
processData: false,
});
});
謝謝,任何幫助將非常感激。
爲什麼你只需'返回RedirectToAction(「Index」,distributionModel);'作爲'Distribution/DocumentDetails'行爲的最後一行? – Suhas
DocumentDetails操作返回DocumentDetails視圖。另外,我嘗試從一個控制器方法中做一個RedirectToAction,並發現它將Document對象作爲NULL傳遞給其他操作。 – gutsmania