我是web delpmnt的初学者。我需要为一个javascript函数(OpenPopupForSelectedFilters)传递一个下拉列表(html.dropdown),但我尝试的是没有工作.Funtion没有收到正确的id。让我知道正确的方法
我的代码:
<tr>
@for (var i = 0; i < (@ViewData["AdditionalMaster"] as List<SelectListItem>).Count; i++)
{
var item = (@ViewData["AdditionalMaster"] as List<SelectListItem>)[i];
<tr>
<td class="formLabel" style="text-align: right; padding-right: 50px">
<label>@item.Text</label>
</td>
<td class="appliedFilter formField" style="text-align: left; width: 300px; padding-right: 50px">
@Html.DropDownList("AdditionalMaster" + @item.Value, null, null, new { @Id ="Role"+(@item.Text).Replace(" ",""), @class = "dropdownStyle multiselect ", @multiple = "multiple", @Style = " width:275px;display:none" })
<a href="javascript:OnClick=OpenPopupForSelectedFilters('Role'+@item.Text.ToString());"style="width: 20px; height: 13px" title="Show Selected Role">
JavaScript函数:
OpenPopupForSelectedFilters = function (val) { debugger;
var id = '#' + val;
var ddlText = $(id).multiselect("getChecked").map(function () {
return this.value;
}).get();
if (ddlText.length == 0)
document.getElementById('seldFitlers').innerText = "No record(s)";
else
document.getElementById('seldFitlers').innerText = $.map($(id + ' :selected'), function (e) { return $(e).text(); }).join('\n');
$("#dv_forSeldFilters").dialog({ title: 'Selected record(s)' });
$('#dv_forSeldFilters').dialog('open');
$('#dv_forSeldFilters').scrollTop(0);
}
答案 0 :(得分:0)
在以下行中:
<a href="javascript:OnClick=OpenPopupForSelectedFilters('Role'+@item.Text.ToString());"
你需要在引号中包含@ item.Text.ToString()并删除“OnClick =”,如下所示:
<a href="javascript:OpenPopupForSelectedFilters('Role'+'@item.Text.ToString()');"
您需要这样做的原因是ASP.NET MVC呈现引擎会将@ item.Text.ToString()评估为文本文字,而不是字符串。这意味着在您的版本中它最终会看起来像这样:
<a href="javascript:OpenPopupForSelectedFilters('Role'+MyRole);"
而不是你想要的是什么:
<a href="javascript:OpenPopupForSelectedFilters('Role'+'MyRole');"
删除“OnClick =”更多的原因是因为没有必要。
答案 1 :(得分:0)
如果下拉列表id
为"Role"+(@item.Text).Replace(" ","")
然后你可以将锚渲染为
<a href="javascript:OpenPopupForSelectedFilters('Role@(item.Text.Replace(" ",""))')"></a>
不需要+
,而您正在删除上方下拉列表id
中的空格。