您正在視圖內填充模型? MVC模式視圖旨在顯示以模型形式傳遞給它們的數據。控制者有責任填充這個模型。
這是說讓我們假設你有一個模型:
public class MyViewModel
{
public int[][] BgtArray { get; set; }
}
其中填充控制器動作中,並傳遞給視圖:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel
{
BgtArray = Enumerable
.Range(1, 10)
.Select(
i => Enumerable
.Range(1, 10)
.Select(j => i * j)
.ToArray()
)
.ToArray()
};
return View(model);
}
}
,然後我們可以有強烈的相應鍵入的視圖中,我們可以JSON序列化模型並在javascript中訪問它:
@model MyViewModel
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
alert(model.BgtArray[1][2]);
</script>
將在瀏覽器中呈現這樣的:
<script type="text/javascript">
var model = {"BgtArray":[[1,2,3],[2,4,6],[3,6,9]]};
alert(model.BgtArray[1][2]);
</script>
至於下面的行而言:
<input type="hidden" value="@Model.BgtArray" id="BudgetArray"/>
因爲你不可能整個複雜的對象圖存儲到一個隱藏字段它是相當無用。渲染結果將是:
<input type="hidden" value="System.Int32[][]" id="BudgetArray"/>
這是不太可能是你想要實現的。
嘿達林。非常感謝您的回覆。然而,即時通訊運行您的代碼時出現以下錯誤:在序列化類型爲「System.Reflection.RuntimeModule」的對象時檢測到循環引用。它發生在這一行:var model = @ Html.Raw(Json.Encode(Model)); – PabloB
這是因爲你有循環引用。您不能使用循環引用序列化對象圖。我建議你使用視圖模型,而不是將你的領域模型傳遞給視圖,並打破這個循環引用。 –