2016-02-18 53 views
0

div內有問題,致電@section scripts{...}。目前,它聲明Uncaught Error: Unknown component 'product-chooser在Div內引用@部分腳本

問:我怎麼能說我的部分從一個div,這樣它把內容靠近頁面頂部內?

的代碼段給我的問題:

@section scripts{ 
    @Html.Partial("ProductChooserScript", Model) 
} 

查看:ProductSelector

<div id="productForm"> 
    @using(Html.BeginForm()) 
    { 
     <div class="col-md-6"> 
      <div class="input-group" data-bind="visible: false, component: { name: 'product-chooser' , params: { value: TargetedProducts, available: AvailableProducts, selected: SelectedProducts }}"></div> 
      @* Failing Here *@ 
      <div> 
       @section scripts{ 
       @Html.Partial("ProductChooserScript", Model) 
      } 
      </div> 
     </div> 
    } 
</div> 

<script type="text/javascript"> 
    function ProductSelectionViewModel(data){ 
     var self = this; 

     // additional javascript/knockout logic here... 
    } 

    $(function(){ 
     window.viewModel = new ProductSelectionViewModel(@Html.Json(Model)); 

     ko.applyBindings(window.viewModel, $("#productForm")[0]) 
    }) 
</script> 

其他注意事項:

如果我刪除圍繞@section scripts{...}div並將其放在頁面的底部,它將呈現局部,但部分呈現在頁面底部(而不是期望的結果),我希望它呈現靠近頂部。

請注意,我做了研究...其他來源沒有解決這個問題。

回答

0

經過深入研究,我能夠解決我的問題。錯誤與我的knockout ...我將我的@section scripts{...}移動到我的視圖的底部,然後創建一個dividproductChooser

此前,我的ko.components.register...是附加在頁面底部呈現的body。將附錄更改爲我的productChooser後,它按預期呈現。

筆者認爲:ProductSelector

<div id="productForm"> 
    @using(Html.BeginForm()) 
    { 
     <div class="col-md-6"> 
      <div class="input-group" data-bind="visible: false, component: { name: 'product-chooser' , params: { value: TargetedProducts, available: AvailableProducts, selected: SelectedProducts }}"></div> 
      <div id="productChooser"></div>  
     </div> 
    } 
</div> 

<script type="text/javascript"> 
    function ProductSelectionViewModel(data){ 
     var self = this; 

     // additional javascript/knockout logic here... 
    } 

    $(function(){ 
     window.viewModel = new ProductSelectionViewModel(@Html.Json(Model)); 

     ko.applyBindings(window.viewModel, $("#productForm")[0]) 
    }) 
</script> 
@section scripts{ 
    @Html.Partial("ProductChooserScript", Model) 
} 

ProductChooserScript

<script type="text/javascript"> 
(function(){ 
    ko.components.register('product-chooser', { 
    viewModel: { 
     createViewModel: function (params) { 
      var chooserModel = new ViewModel(params); 
      var modalHtml = $('#product-chooser-template').html(); 
      $('#productChooser').append(modalHtml); 
      var el = $('#MyModal')[0]; 
      ko.applyBindings(chooserModel, el); 
      initializeControl(chooserModel); 
      return chooserModel; 
     } 
    }, 
    template: $('#product-chooser-preview-template').html() 
}); 
})(); 
</script> 
2

首先,在您定義的部分視圖代碼的位置,對任何事情沒有關係。換句話說,僅僅因爲你在該div中定義它並不意味着該部分的內容將在那裏結束。該部分在佈局調用RenderSection的任何位置呈現。

其次,您只能在佈局或使用佈局的視圖中定義部分。部分視圖不能定義部分,因爲部分視圖不引用佈局。