$("body").on("click", "#ActionButton", function (e) {
//set current select index
currentBook = $(this).attr("data-bookId");
//set title
$("#BookAction .modal-title").text('@Model[currentBook].BookName');
//get list of current book forms
@{List<XLEZ.Models.DataModels.FormModel> CurrentFormsList = Model[currentBook].FormList;}
swap('FillNewData', true);// collapse fill new data list if expanded
$("#FillNewData").empty();
@for (int k = 0; k < CurrentFormsList.Count; k++)
{<text>
var html = "<li onClick=\"SubmitForm('@CurrentFormsList[k].FormLink','@CurrentFormsList[k].FormHideExtraValue','@Model[currentBook].FormActionLink')\" class=\"list-group-item bg-grey-300\" > @Html.Raw(CurrentFormsList[k].FormName) </li>";
$(html).appendTo("#FillNewData");</text>
}
});
我使用上面的代码通过使用模型中的数据提交表单。问题是我想在页面加载后用户进行选择。但剃刀代码在文档准备好之前呈现,当我单击此按钮时,模型的0索引上的数据将加载到此脚本中。无论如何我可以在这个函数中遍历模型吗?
答案 0 :(得分:1)
您无法将JavaScript变量传递/转换为Razor变量。 Razor变量由Razor引擎</ em>处理,其中 JavaScript另一方面是在客户端上运行的客户端语言。
Razor是在服务器上运行的ASP.NET MVC框架使用的视图引擎,用于生成一些HTML模板。
但是,您可以使用Json.Encode方法将数据对象转换为JavaScript Object Notation(JSON)格式的字符串。然后使用它执行操作。
//Convert Model to JSON
var model = @Html.Raw(Json.Encode(Model));
$("body").on("click", "#ActionButton", function (e) {
//set current select index
currentBook = $(this).attr("data-bookId");
//set title
$("#BookAction .modal-title").text(model[currentBook].BookName);
//get list of current book forms
var currentFormsList = model[currentBook].FormList;
// collapse fill new data list if expanded
swap('FillNewData', true);
$("#FillNewData").empty();
for (int k = 0; k < currentFormsList.length; k++)
{
//Create link
$('<li />')
.addClass("SubmitForm list-group-item bg-grey-300")
.data('FormLink', currentFormsList[k].FormLink)
.data('FormHideExtraValue', currentFormsList[k].FormHideExtraValue)
.data('FormActionLink', model[currentBook].FormActionLink)
.html(currentFormsList[k].FormName)
.appendTo("#FillNewData");
}
});
$("#FillNewData").on('click', 'li.SubmitForm', function(){
SubmitForm(
$(this).data('FormLink'),
$(this).data('FormHideExtraValue'),
$(this).data('FormActionLink'),
)
})