我想让这段代码有效:
$('#ddl').change(function () {
$('#cont').html('');
var count = getCount($('#ddl').val())
for (var i = 0; i < count ; i++) {
var html = '<div class="display-row">' +
'<div class="display-label">' +
'Vrednost:' +
'</div>' +
'<div class="display-field">' +
'Od: @Html.TextBoxFor(model => model[i].Od) Do:@Html.TextBoxFor(model => model[i].Do)' +
'@Html.ValidationMessageFor(model => model[i].Do)' +
'</div>' +
'</div>';
$('#cont').append(html);
}
});
我只需要在js循环中获取i
的{{1}}值。
我如何实现这一目标?
答案 0 :(得分:0)
你不能这样做。 ASP.NET在服务器上生成,Javascript仅在您的Web浏览器中运行
答案 1 :(得分:0)
“我只需要在js循环中获取模型[i]的i值。”
如果您需要,可以发出ajax请求并将模型检索为json对象。然后迭代你的列表并做你想做的事。
在您的控制器中创建一个将返回模型列表的操作方法:
return json(your model list);
并在js中执行:
$.post(url, {}, function(data){
for(var i = 0; i < data.lenght; ++i) {
}
});
修改强>
当您在服务器端使用@Html.TextBoxFor(model => model[i].Od)
时,将生成此html:
<input type="text" name="[i].Od" data-val="true" data-val-required="validationMessage" />
因此您可以自己创建这些标记,并且通常将它们放在表单中。 但是为了验证你可以这样做:
//Remove current form validation information
$("form")
.removeData("validator")
.removeData("unobtrusiveValidation");
//Parse the form again
$.validator
.unobtrusive
.parse("form");
(此post的最后一个代码)
答案 2 :(得分:0)
ASP.net代码在服务器上运行,首先,在Javascript中发生任何事情之前。当Javascript代码运行时,页面只是文本 - 你不能像那样调用model [i]。您有两种选择:
如果您的模型相当小,您可以在服务器端代码中,使用razor迭代并生成包含模型中的javascript数组的字符串,将其发送到页面,然后使用您的javascript迭代该数组。
如果您的模型(或其数据)足够大以至于您不想将其全部内容写入页面,您还可以在控制器上创建一个返回json的方法,并且你的javascript代码通过ajax调用它。