2014-08-29 4 views
0

Уважаемые коллеги-программистынокаут + частичные + mvc + правильный способ привязки

Я попал в рассол. Я был в нокауте примерно на 2 недели, и я боюсь, что не понимаю его основной идеи. Будьте осторожны со мной.

Ситуация:

Я получил мастер вид макета страницы/Master, чтобы сделать его простым. Здесь я получил 2 колонки. Слева список с пациентами, после нажатия одного, вы увидите рецепты, добавленные в список ниже. довольно просто ...

enter image description here

Dont Разум renderbody здесь, это неисправно. Просто используйте это изображение, чтобы увидеть две большие части. Красный en и желтый.

Теперь у меня есть Мастер работает очень хорошо, когда я нажимаю на пациента, я хочу загрузить определенный частичный вид на желтую часть экрана. То же самое, нажав на рецепт, затем я хочу загрузить партию рецепта на желтую часть.

Я получил эти 2 редактора, но без включенного мастера. эти страницы выглядят следующим образом:

@model FysioNotes.WebMVC.Models.ViewModels.EditPatientViewModel 

форма + переплеты здесь

@section скрипты {

<script src="~/MyScripts/patientVm.js" /> 
<script> 
    $(function() { 
     ko.applyBindings(new editPatientVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model)))); 
    }); 

</script> 

}

Вы видите, что я использую бритву здесь, чтобы заполнить данные в editPatientVm. файл js выглядит так:

var patientVm = function (data) ... 
var editPatientVm = function (data) ... 
var createPatientVm = function (data) ... 

Это то же самое с рецептами. Теперь, когда я пытаюсь загрузить партию рецепта в желтую часть экрана, я пытаюсь сделать это вот так. И это, вероятно, очень неисправны ....

-- this is at the bottom of the master view -- 
<script type="text/javascript"> 
    $(document).ready(function() { 
$('#tablePrescriptions').on('click', 'tr', function (event) { 
       var selectedId = $(this).data("prescriptionid"); 
    // this data gets filled without troubles 
       $(this).addClass('selectedrow').siblings().removeClass('selectedrow'); 
       openDetail("prescription", selectedId); 
      }); 

, а затем эта функция

function openDetail(type, selectedId) { 
     if (debug) 
      alert(type + " : " + selectedId); 

     var url = baseurl + "/Prescription/Edit?prescriptionId=" + selectedId; 

     $("#mainContent").load(url); 

     //CHECK THIS 
     ko.cleanNode($("#mainContent")[0]); 
     $("#mainContent").load(url, function() { 
      //ko.applyBindings(new viewModel(), $("#mainContent")[0]); 

      ko.applyBindings(new editPrescriptionVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(new FysioNotes.WebMVC.Models.ViewModels.EditPrescriptionViewModel(12836)))), document.getElementById("mainContent")); 
     }); 

    } 

, как вы видите, фиксированный номер 12836 совершенно неправильно делать это так. Но я хотел просто попробовать, если это сработает, и это произошло. Но Apparantly я не могу послать Js вар к бритве, потому что это невозможно .... так что пусть меня к мысли, что им делать что-то совершенно неправильно

мастер вид имеет это в нижней части:

<script src="~/MyScripts/patientVm.js"></script> 
<script src="~/MyScripts/prescriptionVm.js"></script> 
<script> 
    $(function() { 
     ko.applyBindings(new masterVm(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model)))); 
    }) 

</script> 

Думаю, мне нужно, чтобы, возможно, мне нужно было рассмотреть модели, которые мне нужны в частичном в моей модели просмотра мастера? а затем отправить его, но это будет означать, что КАЖДЫЙ viewmodel должен быть на хозяине. Это не может быть полезно для начальной загрузки! И это кажется мне неправильным делать это так, но ив был неправ, прежде чем ....

пожалуйста, помогите :(

ответ

0

@section скрипты не могут работать в представлениях Partials, которые извлекаются через AJAX ...вам придется выполнить свой код между этими тегами после кода, который в первую очередь получает представление. Скрипты @section хранятся в элементах запроса и отображаются при рендеринге страницы. Но так как это ajax, сервер давно прошел точку, где он будет учитывать сценарии, определенные между этим сектором

Смежные вопросы