2016-02-19 50 views
0

我試圖將我的javascript下拉列表的值發送到同一視圖中的變量,該purpouse是我想使用所選選項的值來使一個if語句內的另一個下拉選項,我不知道這樣做的將選項值發送到視圖上的全局變量

任何其他方式這是我的JavaScript

$('#sel0').on('change', function() { 
 
         dataTable.columns('.fechas').search(this.value).draw(); 
 
         date = $(this).val(); 
 
         
 
        });

這是我的看法變量:

@{ 
var Date = ""; 
} 

這是我的下拉列表至極我想借此選定的價值:

<select id="sel0"> 
 
    <option value="">Todos</option> 
 

 
      @foreach (var item in Model.Select(l => l.Fecha).Distinct()) 
 
       { 
 
       <option value="@lines">@lines</option> 
 
      
 
       } 
 
    </select>

我希望能夠使我的列表和值的基於輸入在我從我的下拉列表中選擇的值中選擇的日期,例如:從我的下拉列表中選擇用戶圖片1日期我可以獲取該值並在我的列表的foreach語句中創建一筆總額,並創建一個輸入,其結果爲像這樣:

@foreach (var item in Model.Where(x => x.Date == this.Date)//date is the value i took from the user select option 
      .Select(x => 
       { 
       Rid = x.Rid, 
       Total = x.Total 
       }) 
       .GroupBy(l => l.Rid) //and then grouping 
        .Select(z => new 
        { 
        Turno = z.Key, 
Total = Decimal.Round(z.Sum(l => l.Total), 0) 
        })) 
        { 
        <input value="@item)" /> 
        } 

任何幫助將不勝感激,我不知道這樣做

+0

C#代碼在客戶 – Shyju

+0

執行服務器上的JS代碼之前,你的過濾器返回的局部視圖我知道這就是爲什麼我問如果存在這樣做的話,有人知道這樣做的更好方法 –

回答

0

執行服務器代碼,一旦視圖在瀏覽器中呈現的方式中的任何其它方式有:

  1. 表單POST,讓你Calcs(計算),重新渲染視圖
  2. 對動作方法進行Ajax調用,將所選日期作爲數據傳遞,在動作方法中處理邏輯並返回結果。在成功的情況下,根據收到的響應繪製您的輸入(或填寫它的值)。

尋找你需要的選項的例子有很多。

0

剃鬚刀視圖中的C#代碼在服務器上執行並生成標記,並將返回瀏覽器。您的客戶端js代碼選擇元素更改事件發生在客戶端。您所選選項的值不能用於再次在剃鬚刀中執行一些代碼。

您有2個選項。

頁面重載與選擇的選項的查詢字符串值

當用戶選擇的日期,重新加載頁面,並通過所選擇的項目作爲查詢字符串。這意味着您需要更新當前的GET操作方法以接受此參數值,然後您將使用此值執行過濾。

public ActionResult Index(DateTime? date) 
{ 
    YourViewModel vm = new ViewModel(); 
    if(date!=null) 
    { 
    //Do your filtering based on the date.Value. 
    } 
    return View(vm); 
} 

而當用戶更改下拉菜單時,用選擇選項值重新加載頁面;

$('#sel0').on('change', function() { 
    window.location.href="@Url.Action("Index","Home")?date="+$(this).val(); 
}); 

阿賈克斯

您可以製作一個AJAX調用,你execcute你的過濾器的服務器,然後返回局部視圖背部和注入是對DOM

$('#sel0').on('change', function() { 
    $("#InputContainer").load("@Url.Action("GetDynamicInputs","Home")?date="+$(this).val()); 
}); 

現在確保在你的主頁,你有一個div容器(這是我們將加載輸入動態號碼)編號InputContainer

而且有一個動作方法接受的日期和使用基於傳遞日期值

public ActionResult GetDynamicInputs(DateTime date) 
{ 
    //use the date to determine the markup you want return from your partial view 
    return PartialView(); 
}