Вы заполняете модель внутри вида ???? В представлениях 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
Это потому, что у вас есть круглые ссылки. Вы не можете JSON сериализовать графы объектов с круговыми ссылками. Я бы рекомендовал вам использовать модель представления вместо того, чтобы передавать ваши модели домена в представления и нарушать эту циркулярную ссылку. –