2015-06-02 22 views
1

我目前有面板,每個面板都有一個與其關聯的ID,該ID保存在每個面板的data-id屬性中。我可以通過JavaScript輕鬆獲得。一個面板我有一個刪除按鈕,將刪除面板,它是在數據庫中的條目。一旦這個刪除按鈕被點擊,一個模式將會啓動一個Html.BeginForm(),它被連接到我的控制器上的一個動作。我想知道是否有可能通過JavaScript添加一個widget ID到路由值?使用javascript將路由選擇值傳遞給Html.BeginForm

這裏是我的模式:

<div class="modal fade" id="deleteWidgetModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> 
<div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
      <h4 class="modal-title" id="myModalLabel">Delete widget?</h4><!--add depending on which panel you have clicked--> 
     </div> 
     <div class="modal-body" id="myModalBody"> 
      <!--Depending on which panel insert content--> 
      @using (Html.BeginForm("DeleteWidgetConfirmed", "Dashboard", FormMethod.Post,)) 
      { 
       @Html.AntiForgeryToken() 

       <div class="form-horizontal"> 
        Do you wish to delete this widget? 

        <div class="form-group"> 
         <div class="modal-footer"> 
          <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
          <button type="submit" value="DeleteWidgetConfirmed" class="btn btn-danger btn-ok" id="delete-widget">Delete</button> 
         </div> 
        </div> 
       </div> 
      } 
     </div> 
    </div> 
</div> 

這裏是JavaScript:執行您的JavaScript和用戶交互之前

/*---------------------------------------------DELETING PANELS-------------------------------------------------*/ 
$(document).ready(function() { 
    $('#columns').on('click', '.glyphicon.glyphicon-trash', function (event) { 
     //get id here 

     //toggle the modal 
     $('#deleteWidgetModal').modal('toggle'); 

     //pass id to form 
    }); 
}); 

$(document).ready(function() { 
    document.getElementById('#delete-widget').onclick = function (event) { 
     event.preventDefault(); 

     var parentElement = $(this).closest(".col-md-4.column"); 
     var targetElement = $(this).closest(".panel.panel-default"); 
     targetElement.remove(); 

     //parentElement.addClass("expand-panel"); 
     checkEmptyPanelContainers(); 
    } 
}); 
+0

您能否提供一些有助於理解您的需求的代碼? –

回答

1

Html.BeginForm轉化爲<form>標籤。您可以使用類似這樣的方式修改該表格

$("form").prop('myattribute', value) 
+0

你知道myattribute會在我的情況下嗎?路線價值? – Johnathon64

+1

@ Johnathon64 HTML沒有路由/ MVC的概念。你需要做的是在表單上設置Action。我建議你使用服務器端代碼輸出一個已知值的樣本路線,然後用JS代替實際值。當然,如果您使用多個路線/需要多種樣式,您需要單獨執行每個類型,這並不理想 – Basic

+0

'action'是表單標籤上屬性的名稱 – user326608