2012-03-08 46 views
1

我有一個大腦崩潰,因爲我在我的MVC3項目我自己的jQuery的混合式組合Telerik的擴展。問題與中的RenderPartial Telerik的模態窗口使用Ajax

我希望能夠用Ajax調用的ActionResult是這樣的:

function showDialog(arg) { 
    var url = '/Home/ReserveRent/'; 
    alert(arg); 
    $.ajax({ 
      type: "GET", 
      url: url, 
      data: { id: arg }, 
      dataType: "html", 
      success: function(data) { $('#RenderRent').html(data); }, 
      error: function(data) { alert(url+' '+arg+' '+data); } 
     }); 
    var rentPayment = $('#RenderRent').html(); 
    $('#ModalPay' + arg).html(rentPayment); 
    $('#Window' + arg).data('tWindow').center().open(); 
} 

在頁面加載我創建多個Telerik的的Windows,這是隱藏的,我想用我的jQuery以上後,他們中的每一個來電。我的剃鬚刀頁面有這兩個的div標籤包括:

<div> 
@foreach (ShowAvailability availability in Model.ShowAvailabilities) 
{ 
    foreach (var salesLine in availability.SalesLinesForSale) 
    { 
     SalesLine line = salesLine; 
     Html.Telerik().Window() 
     .Name("Window"+line.SalesLineID) 
     .Title("Submit feedback") 
     .Content(@<text> 
      @using (Html.BeginForm("PayRent", "Payment", FormMethod.Post, new { id = "feedback-form" })) 
      { 
       <p class="note">This is <strong>salesLine</strong> @line.SalesLineID.</p> 

       <div id='"ModalPay"[email protected]'> 
        <!--TODO: Here will rendered Html be copied between Divs--> 
       </div> 
       <div class="form-actions"> 
        <button type="submit" class="t-button t-state-default">Submit feedback!</button> 
       </div> 
      } 
      </text>) 
     .Buttons(b => b.Close()) 
     .Width(400) 
     .Draggable(true) 
     .Modal(true) 
     .Visible(false) 
     .Render(); 
    } 
} 
</div> 
<div id="RenderRent" style="display: none;"> 
    <!-- TODO: Render payment info--> 
    @{Html.RenderPartial("ReserveRent");} 
</div> 

正如你可以在我的Ajax請求中看到我將呈現標記爲#RenderRent div標籤內的結果。因此,我想用Telerik窗口中的特殊Div標籤替換該Div標籤,並且窗口現在應該有正確的模型信息。我的控制器操作是這樣的:

 public ActionResult ReserveRent(int salesLineId) 
    { 
     var salesLine = _salesLineLogic.GetSalesLine(salesLineId); 

     if (!salesLine.IsAvailable) 
     { 
      ViewBag.AvailableSalesLine = @"Þessi orlosfeign er því miður ekki lengur til leigu á þessu tímabili."; 
      return RedirectToAction("Index", "Home"); 
     } 

     salesLine.IsAvailable = false; 
     _salesLineLogic.SaveToDatabase(); 

     var payment = new Payment { FK_SalesLineID = salesLineId, EditedBy = "PayRent.cshtml (GET)", EditedOn = DateTime.Now }; 

     return PartialView(new HomeFormViewModel(payment)); 
    } 

出於某種原因沒有被從Ajax請求收到的參數,salesLineId始終是NULL。任何人都可以發現我在做什麼錯誤的AjaxRequest,或者如果jQuery函數沒有宣佈正確?

+0

喜試。我用Ajax請求看到了我的方式錯誤,我傳遞給控制器​​操作的參數名稱有錯誤的名稱,它當然應該是「saleslineId」。 – gardarvalur 2012-03-08 09:59:55

+0

啊,對不起。我沒有注意到你的評論。現在問題解決了嗎? – Tx3 2012-03-08 10:11:05

+0

謝謝Tx3,是的,問題部分解決了。現在我將正確的數據輸入到我的「#RenderRent」Div標籤中,但是我還有另一個Telerik組件問題。 我想將Div標籤複製到Telerik對話框窗口中,但它總是彈出空的。換句話說,我想讓#RenderRent Div標籤取代Telerik組件中的''ModalPay'+ @ line.SalesLineID'標籤。也許你可以幫助我,可以這樣宣佈div ID嗎? – gardarvalur 2012-03-08 10:19:48

回答

0

ajax調用有不正確的數據。對象文本內的屬性(id)與控制器操作中的salesLineId不匹配。

$.ajax({ 
    type: "GET", 
    url: url, 
    data: { salesLineId: arg }, 
    dataType: "html", 
    success: function(data) { $('#RenderRent').html(data); }, 
    error: function(data) { alert(url+' '+arg+' '+data); } 
}); 

更新

也有一些奇怪的在這條線

<div id='"ModalPay"[email protected]'> 

它應該是這樣的

<div id='[email protected](line.SalesLineID)' > 
+0

Thanx Tx3,我對你的其他評論發表了評論:) – gardarvalur 2012-03-08 10:20:14

+0

是的,我改變了上述的id,它工作:) – gardarvalur 2012-03-08 12:51:10