2016-02-25 2 views
1

Я новичок в сети delpmnt. Мне нужно передать id раскрывающегося списка (html.dropdown) для функции javascript (OpenPopupForSelectedFilters), но то, что я пробовал, не работает. Funtion не получает правильный идентификатор. Дайте мне знать правильный путьвыпадающие списки и функции javascript

Мой код:

<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'[email protected]());"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

В следующей строке:

<a href="javascript:OnClick=OpenPopupForSelectedFilters('Role'[email protected]());" 

Вы должны заключите @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 =» больше всего, потому что это не необходимо.

+0

спасибо, это решило мою ошибку – APR

+0

Если бы вы могли отметить это как ответ, который был бы замечательным. Благодарю. :) –

0

если выпадающий id является "Role"+(@item.Text).Replace(" ","")

, то вы можете сделать якорь как

<a href="javascript:OpenPopupForSelectedFilters('[email protected](item.Text.Replace(" ",""))')"></a> 

нет никакой необходимости для + и вы удаления пробелов в выпадающем списке id выше.

Смежные вопросы