2017-06-28 72 views
0

我有一個審閱表單,它生成一組問題和一組答案選項,並且可以在單擊特定按鈕時生成新的臨時問題。局部視圖方法僅在按鈕單擊時觸發一次

adhoc是一個局部視圖,它附加到它下面的主視圖。當我點擊按鈕生成即席問題時,將出現即席局部視圖。

我可以輸入我的問題並選擇收音機答案選項。當我再次點擊adhoc按鈕時,表格出現,但是當我嘗試爲第二個adhoc問題選擇一個答案時,它將刪除我爲第一個adhoc問題選擇的答案!

我在PartialViewResults Adhoc()上放了一個斷點,我注意到在第一個adhoc按鈕單擊時,Adhoc()會執行。該方法執行並給部分視圖一個id。在第二次按鈕單擊時,該方法不會執行。它附加到與第一個特別部分視圖相同的id的主視圖。

我似乎無法弄清楚如何讓每個按鈕單擊執行該方法。以下鏈接包含代碼/ html。

$(function() { 

    $('.btnAdhoc').click(function (event) { 
     event.preventDefault(); 

     $.ajax({ 
      url: '/ProjectManagers/Forms/Adhoc', 
      //data: JSON.stringify(model), 
      type: 'get', 
      success: function (result) { 
       $('#adhoc').append(result); 
      } 
     }); 
    }); 
}); 

更新1

下面我剛纔的問題鏈接之前包含了所有的HTML/CODE

How to pass Model from View to Controller, add items to list, pass back to view

更新2

改寫我的問題,我希望這可以消除混淆。

更新3

似乎是一個Internet Explorer相關的問題。它工作在鉻,但我需要這個在IE中工作。

更新3:在功能腳本錯誤:通過增加高速緩存固定

固定。

+0

你能改寫這個問題的描述,使一個可重複的jsfiddle或codepen?沒有HTML,真的很難理解你在問什麼... – shaochuancs

+0

我添加了一個鏈接到一個問題,而後面的代碼/ html沒有改變。 – userdp

回答

0

請嘗試這個例子,並注意到我把在評論中

景觀:

@model Testy20161006.Controllers.ViewModel 
<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>IndexValid8</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      $("#btnClick").click(function() { 
       var PassDDLView = { ddlValue: $("#passThis").val() }; 
       //took out your preventDefault 
       //your url should be /Controller/Action, so I am doint this 
       $.ajax({ 
        url: '/Home/AdHoc', 
        type: 'GET', 
        data: PassDDLView, 
        success: function (result) { 
         alert(result.Component); 
        }, 
        error: function (xhr, ajaxOptions, thrownError) { 
         alert(xhr.status); 
         alert(thrownError); 
        } 
       }); 
      }) 
     }) 
    </script> 
</head> 
<body> 
    <div class="form-group"> 
     @Html.DropDownListFor(m => m.ComponentId, 
         new SelectList(Model.ComponentList, "Value", "Text"), new { id = "passThis" }) 
     <input type="button" id="btnClick" value="submitToAjax" /> 
    </div> 
</body> 
</html> 

控制器/的ViewModels:

//You can put this in a model folder 
public class ViewModel 
{ 
    public ViewModel() 
    { 
     ComponentList = new List<SelectListItem>(); 
     SelectListItem sli = new SelectListItem { Text = "component1", Value = "1" }; 
     SelectListItem sli2 = new SelectListItem { Text = "component2", Value = "2" }; 
     ComponentList.Add(sli); 
     ComponentList.Add(sli2); 
    } 

    public List<SelectListItem> ComponentList { get; set; } 
    public int ComponentId { get; set; } 
} 

public class PassDDLView 
{ 
    public string ddlValue { get; set; } 
} 

public class HomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult AdHoc(PassDDLView passDDLView) 
    { 
     //put a breakpoint here to see the ddl value in passDDLView 
     ViewModel vm = new ViewModel(); 
     return Json(new 
     { 
      Component = "AComponent" 
     } 
     , JsonRequestBehavior.AllowGet); 
    } 

    public ActionResult IndexValid8() 
    { 
     ViewModel vm = new ViewModel(); 
     return View(vm); 
    } 
+0

我剛剛發現我的問題是使用Internet Explorer進行調試時遇到的問題。它適用於Chrome。我會試一試 – userdp

+0

通過在函數腳本中添加cache:false來修復。 – userdp

相關問題