0

我想让这段代码工作:

$('#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 循环中获取ifor的值。model[i]

我怎样才能做到这一点?

4

3 回答 3

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");

(这篇文章的最后一个代码)

于 2013-10-25T15:20:59.483 回答
0

你不能这样做。ASP.NET 在服务器上生成,Javascript 仅在您的网络浏览器中运行

于 2013-10-25T15:18:21.533 回答
0

ASP.net 代码首先在服务器上运行,然后在 Javascript 中发生任何事情。到 Javascript 代码运行时,页面只是文本 - 你不能像那样调用 model[i]。你有两个选择:

  1. 如果您的模型相当小,您可以在服务器端代码中,让 razor 遍历并从模型中生成一个包含 javascript 数组的字符串,将其发送到页面,然后让您的 javascript 遍历该数组。

  2. 如果您的模型(或其数据)足够大以至于您不想将其全部内容写入页面,您还可以在控制器上创建一个返回 json 的方法,并让您的 javascript 代码调用它通过ajax。

于 2013-10-25T15:23:05.093 回答