gpt4 book ai didi

javascript - 将动态生成的字符串从 View 传递到 Controller

转载 作者:行者123 更新时间:2023-12-03 09:17:17 25 4
gpt4 key购买 nike

我使用复选框动态创建其值的字符串,仅在选中该复选框时添加关联的值。这些值以逗号分隔。

这是一个代码笔,展示了我是如何做到这一点的:

http://codepen.io/cavanflynn/pen/mJoybE

HTML:

<dl class="dropdown"> 
<dt>
<a href="#">
<span class="hida">▼</span>
</a>
</dt>
<dd>
<div class="mutliSelect">
<ul class="ul">
<li>
<input type="checkbox" value="Test 1" />PO Number
</li>
<li>
<input type="checkbox" value="ReturnAuthNumber" />RA Number
</li>
<li>
<input type="checkbox" value="StatusId" />Status
</li>
<li>
<input type="checkbox" value="ManufacturerId" />Manufacturer
</li>
</ul>
</div>
</dd>
</dl>
<p class="multiSel"></p>

Javascript:

$(".dropdown dt a").on('click', function () {
$(".dropdown dd ul").slideToggle('fast');
});

$(".dropdown dd ul li a").on('click', function () {
$(".dropdown dd ul").hide();
});

function getSelectedValue(id) {
return $("#" + id).find("dt a span.value").html();
}

$(document).bind('click', function (e) {
var $clicked = $(e.target);
if (!$clicked.parents().hasClass("dropdown")) $(".dropdown dd ul").hide();
});


$('.mutliSelect').on('click', function () {
$('p.multiSel').html(
$(this).find('input[type="checkbox"]:checked')
.map(function(idx, elem) {
return $(elem).parent().text().trim();
})
.get().map(function(text) {
return "<span>" + text + "</span>";
}).join(', '));
});

现在,我尝试使用 @Html.Hidden 在 View 中隐藏此字符串,并使用表单将其传递给 Controller ​​操作。

所以我将该段落的html更改为:

@Html.Hidden("selectedRows",new { @class="multiSel"})

和 JS:

  $('.mutliSelect').on('click', function () {
$('multiSel').html(
$(this).find('input[type="checkbox"]:checked')
.map(function(idx, elem) {
return $(elem).parent().text().trim();
}).get().map(function(text) {
return text;
}).join(', '));
});

但我只是将 { class="multiSel"} 传递到字符串中的 Controller 。我知道我在这里遗漏了一些部分,但是调整它以将隐藏字符串传递给 Controller ​​的最佳方法是什么。

表单提交:

@using (Html.BeginForm("RunQuery","Report"))
{
<dl class="dropdown">
<dt>
<a href="#">
<span class="hida">▼</span>
</a>
</dt>
<dd>
<div class="mutliSelect">
<ul class="ul">
<li>
<input type="checkbox" value="Test 1" />PO Number
</li>
<li>
<input type="checkbox" value="ReturnAuthNumber" />RA Number
</li>
<li>
<input type="checkbox" value="StatusId" />Status
</li>
<li>
<input type="checkbox" value="ManufacturerId" />Manufacturer
</li>
</ul>
</div>
</dd>
</dl>

@Html.Hidden("selectedRows",null,new { @class="multiSel"})
<button type="submit" class="btn btn-primary" id="btnGo">Go</button>
}

Controller 操作:

[HttpPost]
public ActionResult RunQuery(string selectedRows)
{

}

最佳答案

您正在传递 htmlAttribute 作为输入值,请考虑以下内容:

@Html.Hidden("selectedRows",null,new { @class="multiSel"})

而不是

@Html.Hidden("selectedRows",new { @class="multiSel"})

并且您需要将 JS 代码更改为:

$('.mutliSelect').on('click', function () {
$('#selectedRows').val(
$(this).find('input[type="checkbox"]:checked')
.map(function(idx, elem) {
return $(elem).parent().text().trim();
})
.get().map(function(text) {
return text;
}).join(', ')
);
});

关于javascript - 将动态生成的字符串从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com