asp.net mvc 3 的转发器类型控件

发布于 2024-11-30 12:27:11 字数 228 浏览 2 评论 0原文

是否有任何类型的 .net mvc 3 控件(可能是一些 html 帮助器方法)像 asp:repeater 一样工作?

我做了一些谷歌搜索,只找到了一些本土解决方案。

这是我需要的: 我的用户将有一个数字下拉列表,具体取决于他们选择的内容 (1-8),我需要重复下面的一组代码来为他们提供相同的输入字段列表(1 到 8 次)。

使用 mvc 3 和 jquery 实现此目的的最佳方法是什么?

is there any sort of control for .net mvc 3 (some html helper method perhaps) that works like an asp:repeater?

I've done some googling and only found some home grown solutions.

Here's what I need:
My users will have a drop down list of numbers, depending what they select (1-8), I need to repeat a set of code below to offer them the same list of input fields (between 1 and 8 times).

what would be the best way to accomplish this with mvc 3 and jquery?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

别在捏我脸啦 2024-12-07 12:27:11

您应该使用 jquery templates 为此,

我从我的项目中复制粘贴了一些代码我目前正在研究,但我想您已经了解如何使用 jquery 模板解决您的问题了。

您可以将模板放在局部视图中。例如:

<input type="hidden" id="productId" value="${ProductId}"/>
<div class="formElement">
    <label>@Globalization.Workorders.Domainname</label>
    <input type="text" id="domainname" name="domainname" />        
</div>
<div class="formElement">
    <label>@Globalization.Workorders.StartDate</label>
    <input type="text" id="startDate" value=""/>
</div>
<input type="submit" id="addHostingProduct" value="@Globalization.Workorders.Add"/>
<input type="button" id="addHostingProductCancel" value="@Globalization.Workorders.Cancel"/>

模板采用 json 对象或 json 对象数组来渲染。 ${...} 替换为 json 中的值。

我通常将部分视图/模板放在视图中,如下所示:

<script id="AddHostingProductTemplate" type="text/x-jquery-tmpl">
    @Html.Partial("Templates/AddHostingProduct")
</script>

当页面首次加载时,您可以执行以下操作来设置初始值:

<script type="text/javascript">
    $(document).ready(function() {
        @foreach (var workOrderLine in Model.WorkOrderLines)
        {
            <text>
                  $('#AddHostingProductTemplate').tmpl(@workOrderLine.ToJson()).appendTo("#products")                
            </text>
        }

     });
</script>

ToJson 方法是我放在视图模型上的方法,它只是序列化viewmodel 转换为 json 字符串。

当用户单击按钮或更改下拉列表时,可以轻松使用客户端代码中的模板来呈现额外的模板。只需使用:

$('#AddHostingProductTemplate').tmpl({ someValue: '1', someOtherValue : ' test' }).appendTo("#products")

希望这有帮助

You should use jquery templates for this

I copy-pasted some code from a project I'm currently working on, but I think you get the picture how you can solve your problem with jquery templates.

You can put the templates in a partialview. For example:

<input type="hidden" id="productId" value="${ProductId}"/>
<div class="formElement">
    <label>@Globalization.Workorders.Domainname</label>
    <input type="text" id="domainname" name="domainname" />        
</div>
<div class="formElement">
    <label>@Globalization.Workorders.StartDate</label>
    <input type="text" id="startDate" value=""/>
</div>
<input type="submit" id="addHostingProduct" value="@Globalization.Workorders.Add"/>
<input type="button" id="addHostingProductCancel" value="@Globalization.Workorders.Cancel"/>

The template takes a json object or an array of json objects to render. The ${...} are replaced with values from the json.

I usually put the partialviews/templates in the view like this:

<script id="AddHostingProductTemplate" type="text/x-jquery-tmpl">
    @Html.Partial("Templates/AddHostingProduct")
</script>

When you're page first loads, you can do something like this, to set the initial values:

<script type="text/javascript">
    $(document).ready(function() {
        @foreach (var workOrderLine in Model.WorkOrderLines)
        {
            <text>
                  $('#AddHostingProductTemplate').tmpl(@workOrderLine.ToJson()).appendTo("#products")                
            </text>
        }

     });
</script>

The ToJson method is a method I put on the viewmodel, it just serializes the viewmodel into a json string.

When a user clicks a button or changes the dropdown, it's easy to use the template in your client side code to render the extra templates. Just use:

$('#AddHostingProductTemplate').tmpl({ someValue: '1', someOtherValue : ' test' }).appendTo("#products")

Hope this helps

忘年祭陌 2024-12-07 12:27:11

将所有 8 个输入字段放在页面上,并使用 jQuery 根据选择框中选定的数字显示/隐藏字段。

Put all 8 input fields on the page, and use jQuery to show/hide the fields based on the selected number in the select box.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文